Minify - a minifier of js, css, html and img files.
To get things done Minify uses these amazing tools:
For Node users:
npm i minify -gFor Deno users:
import{minify}from'npm:minify';Usage: minify [options]
Options:
-h, --help display this help and exit
-v, --version display version and exit
--js minify javascript
--css minify css
--html minify html
--auto auto detect formatThe bash command below creates a code snippet saved as hello.js.
Simply copy + paste the code starting with cat, including the EOT on the last line, and press .
$ cat <<EOT > hello.jsconst hello = 'world';for (let i = 0; i < hello.length; i++) { console.log(hello[i]);}EOTUse the command minify followed by the path to and name of the js file intended to be minified. This will minify the code and output it to the screen.
$ minify hello.js
var a='world';for(let i=0;i<a.length;i++)console.log(a[i]);You can capture the output with the following:
$ minify hello.js > hello.min.jsUse --fail-on-error to get a non-zero exit code when minification fails (useful in build scripts and CI):
$ minify broken.js --fail-on-error > broken.min.js
$ echo$?
1You can pass input using cat:
cat <<EOT | bin/minify.js --js> const hello = 'world';>> for (let i = 0; i < hello.length; i++) {> console.log(hello[i]);> }> EOTvar a='world';for(let i=0;i<a.length;i++)console.log(a[i]);Minify can be used with async-await and try-to-catch:
import{minify}from'minify';import{tryToCatch}from'try-to-catch';constoptions={html: {removeAttributeQuotes: false,removeOptionalTags: false,},};const[error,data]=awaittryToCatch(minify,'./client.js',options);if(error)returnconsole.error(error.message);console.log(data);For cli use these options can be provided in a JSON file named .minify.json like so:
{
"js": {
"type": "putout",
"putout": {
"quote": "'",
"mangle": true,
"mangleClassNames": true,
"removeUnusedVariables": true,
"removeConsole": false,
"removeUselessSpread": true
}
},
"img": {
"maxSize": 4096
},
"html": {
"removeComments": true,
"removeCommentsFromCDATA": true,
"removeCDATASectionsFromCDATA": true,
"collapseWhitespace": true,
"collapseBooleanAttributes": true,
"removeAttributeQuotes": true,
"removeRedundantAttributes": true,
"useShortDoctype": true,
"removeEmptyAttributes": true,
"removeEmptyElements": false,
"removeOptionalTags": true,
"removeScriptTypeAttributes": true,
"removeStyleLinkTypeAttributes": true,
"minifyJS": true,
"minifyCSS": true
},
"css": {
"type": "clean-css",
"clean-css": {
"compatibility": "*"
}
}
}Minify walking up parent directories to locate and read it’s configuration file .minify.json.
In section related to js you can choose type of minifier:
When you want to pass options to terser, use section with the same name, .minify.json will look this way:
{
"js": {
"type": "terser",
"terser": {
"mangle": false
}
}
}MIT