Skip to content

Repository files navigation

Minify LicenseBuild StatusNPM versionCoverage Status

Minify - a minifier of js, css, html and img files.

To get things done Minify uses these amazing tools:

Install

For Node users:

npm i minify -g

For Deno users:

import{minify}from'npm:minify';

How to use?

CLI

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 format

The 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]);}EOT

Use 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.js

Use --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$?
1

You 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);

Options

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.

js

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
}
}
}

License

MIT

About

Minifier of js, css, html and img

Topics

Resources

Contributing

Stars

254 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages