This repo automates the task of testing the awesome Butternut minifier against the JavaScript libraries from cdnjs.
Note: This tool makes use of ES2017's async
/await
features and thus needs at least Node.js v7.6.0 to execute.
First, clone the repo and install the dependencies via npm install
.
To run Butternut on the first twenty untested libraries, do this on the command line:
node run --take 20
The tool will then grab the list of libraries from the cdnjs API and cache it for whatever the Cache-Control
header says, usually 4 hours.
Subsequently it will iterate over the list in alphabetical order and pick the first twenty libraries that have not been tested yet. They will be handled in chunks of 5 concurrent items at a time and then be marked as tested. An indicator if the minification was successful will be shown in the terminal.
Hint: If you're sick of this Readme, you can always use
node help
Whenever the minification of a library fails, additional information will be put into the failed/[library-name]
folder.
It will contain the source.js
file, an error.txt
if a JavaScript error occurred or respectively an error.json
, repro.input.js
and repro.output.js
in case there was no error, but the Butternut output was considered invalid.
Marking libraries as tested simply means their names will be appended to the .handled-sources
file in the root of the repository.
To remove that file as well as the library list cache and the failed
folder, run
node reset
from the command line.
You can customize the usage of the CLI run
command with the following options:
Option | Default value | Description |
---|---|---|
‑‑take, ‑t | 100 | How many libraries should be tested |
‑‑chunk‑size, ‑c | 5 | The number of concurrently handled libraries |
‑‑skip-until, ‑s | 0 | How many untested libraries should be skipped from the beginning of the list. This may also be a string: Passing Wrapping the string in |
‑‑ignore‑cache, ‑i | not set | If this flag is set, the library list cache will be invalidated immediately, the list will be re-fetched from the cdnjs API, the tested marker on libraries will be ignored and no new tested markers will be set during the execution of the command. |
Combining those lets you handle most use cases – for example if you just want to test jQuery, run this:
node run -s /^jquery$/i -t 1