A simple utility to check file and directory sizes against a budget.
To install:
npm install toobig --save-dev
Or if you prefer using Yarn:
yarn add toobig --dev
By default, toobig
will search up the directory tree for configuration in the following places:
- a
toobig
property inpackage.json
- a
.toobigrc
file in JSON or YAML format - a
.toobigrc.json
file - a
.toobigrc.yaml
,.toobigrc.yml
, or.toobigrc.js
file - a
toobig.config.js
file exporting a JS object
toobig
continues to search up the directory tree, checking each of these places in each directory, until it finds some acceptable configuration (or hits the home directory).
Configuration looks like this:
{
"budgets": {
"dist/*.entry.js": "16KB",
"dist/*.lazy.js": "128KB"
}
}
If you want to specify which reporters to use, it would look something like this:
{
"budgets": {
"dist/*.entry.js": "16KB",
"dist/*.lazy.js": "128KB"
},
"reporters": [
"line",
["table", { "template": "markdown" }],
"summary",
["json", { "output": "toobig-report.json" }],
["junit", { "output": "toobig-report.xml" }],
["tap", { "output": "toobig-report.txt" }]
]
budgets
is a map where the keys are glob expressions, and the values are their corresponding budget. If any file or directory that matches a glob expression is bigger than its specified budget, toobig
will exit with a non-zero status.
reporters
is an array of reporters that will process results.
Built-in reporters are:
line
table
summary
json
junit
tap
scan
is the default command. It scans the current working directory to check for entries over budget, and reports them.
To get help:
toobig --help
To run:
toobig
To specify the location of the config file, instead of relying on the search logic described above:
toobig --config path/to/.toobigrc
To specify the reporters to use:
toobig --reporters json > toobig-report.json
To compare against the results of a previous run:
toobig --baselines toobig-previous.json --reporters table summary
load
allows you to load results from a previous run, and report them.
To get help:
toobig load --help
To run:
toobig load --results toobig-report.json
To specify the reporters to use:
toobig load --results toobig-report.json --reporters table summary
To compare against the results of a previous run:
toobig load --results toobig-report.json --baselines toobig-previous.json --reporters table summary
import { scanAndReport } from "toobig";
const { results, anyOverBudget } = await scanAndReport({
budgets: {
"dist/*.entry.js": "16KB",
"dist/*.lazy.js": "128KB",
},
reporters: [["json", { output: "toobig-report.json" }]],
});
import { loadAndReport } from "toobig";
const { results, anyOverBudget } = await loadAndReport({
results: "toobig-report.json",
reporters: [
"default",
["junit", { output: "toobig-report.xml" }],
["tap", { output: "toobig-report.txt" }],
],
});
To build:
npm run build
To continuously build on changes:
npm run watch:build
To run linting and unit tests:
npm test
To run just unit tests:
npm run test:unit
To continuously run unit tests on changes:
npm run watch:unit
- Code:
git clone git://github.com/unindented/toobig.git
- Home: https://github.com/unindented/toobig
- Daniel Perez Alvarez (https://github.com/unindented)
- Dreadwail (https://github.com/dreadwail)
This is free software, and may be redistributed under the terms specified in the LICENSE file.