minify-all-cli
Version:
Minify All JS, CSS and HTML files in a folder by using UglifyJS, CSSNano and HTMLMinifier with an option to gzip all the files as well.
37 lines (33 loc) • 2.6 kB
JavaScript
#! /usr/bin/env node
"use strict";
const yargs = require("yargs");
var MinifyAllCLI = require("../lib/node.js");
const cliOptions = yargs
.usage("Usage: -s <source> -d <destination>")
.option("j", { alias: "skipJS", describe: "Should minify JavaScript the file or skip it?", type: "boolean", demandOption: false })
.option("c", { alias: "skipCSS", describe: "Should minify CSS the file or skip it?", type: "boolean", demandOption: false })
.option("h", { alias: "skipHTML", describe: "Should minify HTML the file or skip it?", type: "boolean", demandOption: false })
.option("g", { alias: "doGzip", describe: "Should gzip the file or skip it?", type: "boolean", demandOption: false })
.option("x", { alias: "jsCompressor", describe: "Which JavaScript mangler/compressor to use for minification? Default: uglifyjs", type: "string", demandOption: false })
.option("m", { alias: "skipFileMasks", describe: "Partial Filder Path to skip minification", type: "array", demandOption: false })
.option("e", { alias: "skipFileExtensions", describe: "File Extensions to skip it over", type: "array", demandOption: false })
.option("i", { alias: "ignoreFileMasks", describe: "Partial Filder Path to ignore minification and copy to destination", type: "array", demandOption: false })
.option("f", { alias: "configFile", describe: "Specifies a json configuration file for the UglifyJS/terser, CSSNano and HTML Minifier module", type: "string", demandOption: false })
.option("l", { alias: "logLevel", describe: "Set log level to print warn, log, error, fatal messages", type: "string", demandOption: false })
.option("p", { alias: "processCount", describe: "Specifies process count to set maximum degree of parallelism", type: "number", demandOption: false })
.argv;
var options = {
skipJS: cliOptions.skipJS || cliOptions.j || false,
skipCSS: cliOptions.skipCSS || cliOptions.c || false,
skipHTML: cliOptions.skipHTML || cliOptions.h || false,
doGzip: cliOptions.doGzip || cliOptions.g || false,
jsCompressor: cliOptions.jsCompressor || cliOptions.x || "uglifyjs",
skipFileMasks: cliOptions.skipFileMasks || cliOptions.m || [],
skipFileExtensions: cliOptions.skipFileExtensions || cliOptions.e || [],
ignoreFileMasks: cliOptions.ignoreFileMasks || cliOptions.i || [],
configFile: cliOptions.configFile || cliOptions.f || null,
logLevel: cliOptions.logLevel || cliOptions.l || "info",
processCount: cliOptions.processCount || cliOptions.p || 10
};
var objMinifyAll = new MinifyAllCLI(cliOptions.s, cliOptions.d, options);
objMinifyAll.process();