UNPKG

deep-package-manager

Version:
87 lines (71 loc) 1.77 kB
/** * Created by AlexanderC on 12/15/15. */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Optimizer = undefined; var _Exec = require('../Helpers/Exec'); class Optimizer { /** * @param {String} path */ constructor(path) { this._path = path; this._compressionLevel = Optimizer.COMPRESSION_LEVEL; } /** * @param {String[]} excludeExtensions * @param {Function} callback */ optimize(excludeExtensions = [], callback = () => {}) { console.debug(`Optimize frontend in '${this._path}' by compressing it`); excludeExtensions.push('gz'); // exclude *.gz by default let pattern = ''; excludeExtensions.forEach(extension => { pattern += ` -name "*.${extension}" -o`; }); pattern = pattern.slice(0, -2); // remove last chars '-o' let cmd = new _Exec.Exec('find', // find '.', // in current directory '-type f', // all files `! \\( ${pattern} \\)`, // exclude passed extensions `-exec gzip -${this._compressionLevel} "{}" \\;`, // compress using desired level '-exec mv "{}.gz" "{}" \\;' // restore files original names ); cmd.cwd = this._path; cmd.avoidBufferOverflow().run(result => { if (result.failed) { callback(result.error); return; } callback(null); }); } /** * @returns {Number} */ get compressionLevel() { return this._compressionLevel; } /** * @param {Number} level */ set compressionLevel(level) { this._compressionLevel = parseInt(level); } /** * @returns {String} */ get path() { return this._path; } /** * @returns {Number} */ static get COMPRESSION_LEVEL() { return 9; } } exports.Optimizer = Optimizer;