Skip to content

coderaiser/minify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c3a1732 · Dec 13, 2023
Dec 10, 2023
Oct 11, 2023
Dec 10, 2023
Dec 13, 2023
Jan 20, 2023
Feb 13, 2022
May 24, 2023
Jun 8, 2022
Oct 4, 2021
May 7, 2023
May 27, 2022
Dec 13, 2023
May 26, 2023
Oct 13, 2023
Jun 20, 2022
Oct 11, 2023
May 24, 2023
Dec 13, 2023

Repository files navigation

Minify License Build Status NPM version Coverage Status

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

To get things done Minify uses this 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.js
const 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

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

const options = {
    html: {
        removeAttributeQuotes: false,
        removeOptionalTags: false,
    },
};

const [error, data] = await tryToCatch(minify, './client.js', options);

if (error)
    return console.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": {
        "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": {
        "compatibility": "*"
    }
}

Minify walking up parent directories to locate and read it’s configuration file .minify.json.

License

MIT