automin
Version:
"Create a minified mirror version of your js, css, html, json files"
105 lines (104 loc) • 4.01 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const env_res_1 = __importDefault(require("env-res"));
const outputs_1 = require("../helpers/outputs");
const minifiers = __importStar(require("./minifier"));
const path_1 = require("path");
const fs_1 = require("fs");
const mkdirp_1 = __importDefault(require("mkdirp"));
const size_converter_1 = __importDefault(require("../helpers/size-converter"));
;
const copy = (src, dest) => {
try {
(0, fs_1.copyFileSync)(src, dest);
return false;
}
catch (err) { }
return false;
};
exports.default = (files) => {
const methods = minifiers;
files.forEach((file) => {
const ext = (0, path_1.extname)(file).substring(1).toLowerCase();
let diff = (0, fs_1.statSync)(file).size;
// Replace input with output directory
const outdir = file.replace(env_res_1.default.get("input"), env_res_1.default.get("output"));
// Get the file contents
const code = (0, fs_1.readFileSync)(file, {
encoding: "utf8",
flag: "r"
});
// Create Output directories if does not exists
mkdirp_1.default.sync((0, path_1.dirname)(outdir));
let res = {
output: "",
hasError: false
};
// Copy the file if its lessthan 1kb size/contents
if (code.length < 1024) {
// If we does not have avalable
// minifier, just make a copy
// and paste it on output folder.
try {
// I want to see if there was a changes
// in old file(if exists) and new file
//
// May throw an error if output
// file does not exists
diff -= (0, fs_1.statSync)(outdir).size;
}
catch (err) { }
res.hasError = copy(file, outdir);
(0, outputs_1.print_stats)(file.substring(env_res_1.default.get("input").length + 1), {
diff: (0, size_converter_1.default)(diff),
stat: (res.hasError) ? "Bad" : "Copied"
});
return;
}
else {
// If we have available minifier, then...
res = methods[ext](file, code);
}
try {
// Save results to a new/ouput directories
(0, fs_1.writeFileSync)(outdir, res.output, {
encoding: "utf8",
flag: "w"
});
diff -= (0, fs_1.statSync)(outdir).size;
}
catch (err) {
res.hasError = true;
}
(0, outputs_1.print_stats)(file.substring(env_res_1.default.get("input").length + 1), {
diff: (0, size_converter_1.default)(diff),
stat: (res.hasError) ? "Failed" : "Okay"
});
});
};