UNPKG

grind-assets

Version:
74 lines (57 loc) 7.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CssMinifyPostProcessor = void 0; var _PostProcessor = require("./PostProcessor.js"); var _optional = require("../Support/optional.js"); var _grindSupport = require("grind-support"); function _isnil(val) { return val === null || typeof val === 'undefined'; } const CleanCSS = (0, _optional.optional)('clean-css', '>=4'); class CssMinifyPostProcessor extends _PostProcessor.PostProcessor { constructor(app, shouldOptimize, sourceMaps) { super(app, shouldOptimize, sourceMaps); this.supportedExtensions = ['css']; this.options = {}; this.options = app.config.get('assets.post_processors.css.minify', {}); if (typeof this.options.enabled === 'boolean') { this.shouldOptimize = this.options.enabled; } } process(sourcePath, targetPath, contents) { if (!this.shouldOptimize || sourcePath.indexOf('.min.') >= 0) { return Promise.resolve(contents); } if (!CleanCSS.resolve()) { return Promise.resolve(contents); } const options = Object.assign({}, this.options); if (this.sourceMaps === 'auto') { if (!_isnil(targetPath)) { options.sourceMap = true; } else { options.sourceMapInlineSources = true; } } return new Promise((resolve, reject) => { try { new CleanCSS.pkg(options).minify(contents, (err, result) => { if (!_isnil(err)) { return reject({ file: sourcePath, message: err[0] }); } if (_isnil(targetPath) || _isnil(result.sourceMap)) { return resolve(result.styles); } _grindSupport.FS.writeFile(`${targetPath}.map`, result.sourceMap).then(() => resolve(result.styles)).catch(reject); }); } catch (err) { return reject(err); } }); } } exports.CssMinifyPostProcessor = CssMinifyPostProcessor; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Qb3N0UHJvY2Vzc29ycy9Dc3NNaW5pZnlQb3N0UHJvY2Vzc29yLmpzIl0sIm5hbWVzIjpbIkNsZWFuQ1NTIiwiQ3NzTWluaWZ5UG9zdFByb2Nlc3NvciIsIlBvc3RQcm9jZXNzb3IiLCJjb25zdHJ1Y3RvciIsImFwcCIsInNob3VsZE9wdGltaXplIiwic291cmNlTWFwcyIsInN1cHBvcnRlZEV4dGVuc2lvbnMiLCJvcHRpb25zIiwiY29uZmlnIiwiZ2V0IiwiZW5hYmxlZCIsInByb2Nlc3MiLCJzb3VyY2VQYXRoIiwidGFyZ2V0UGF0aCIsImNvbnRlbnRzIiwiaW5kZXhPZiIsIlByb21pc2UiLCJyZXNvbHZlIiwiT2JqZWN0IiwiYXNzaWduIiwic291cmNlTWFwIiwic291cmNlTWFwSW5saW5lU291cmNlcyIsInJlamVjdCIsInBrZyIsIm1pbmlmeSIsImVyciIsInJlc3VsdCIsImZpbGUiLCJtZXNzYWdlIiwic3R5bGVzIiwiRlMiLCJ3cml0ZUZpbGUiLCJ0aGVuIiwiY2F0Y2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0E7Ozs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsd0JBQVMsV0FBVCxFQUFzQixLQUF0QixDQUFqQjs7QUFFTyxNQUFNQyxzQkFBTixTQUFxQ0MsNEJBQXJDLENBQW1EO0FBSXpEQyxFQUFBQSxXQUFXLENBQUNDLEdBQUQsRUFBTUMsY0FBTixFQUFzQkMsVUFBdEIsRUFBa0M7QUFDNUMsVUFBTUYsR0FBTixFQUFXQyxjQUFYLEVBQTJCQyxVQUEzQjtBQUQ0QyxTQUg3Q0MsbUJBRzZDLEdBSHZCLENBQUMsS0FBRCxDQUd1QjtBQUFBLFNBRjdDQyxPQUU2QyxHQUZuQyxFQUVtQztBQUc1QyxTQUFLQSxPQUFMLEdBQWVKLEdBQUcsQ0FBQ0ssTUFBSixDQUFXQyxHQUFYLENBQWUsbUNBQWYsRUFBb0QsRUFBcEQsQ0FBZjs7QUFFQSxRQUFJLE9BQU8sS0FBS0YsT0FBTCxDQUFhRyxPQUFwQixLQUFnQyxTQUFwQyxFQUErQztBQUM5QyxXQUFLTixjQUFMLEdBQXNCLEtBQUtHLE9BQUwsQ0FBYUcsT0FBbkM7QUFDQTtBQUNEOztBQUVEQyxFQUFBQSxPQUFPLENBQUNDLFVBQUQsRUFBYUMsVUFBYixFQUF5QkMsUUFBekIsRUFBbUM7QUFDekMsUUFBSSxDQUFDLEtBQUtWLGNBQU4sSUFBd0JRLFVBQVUsQ0FBQ0csT0FBWCxDQUFtQixPQUFuQixLQUErQixDQUEzRCxFQUE4RDtBQUM3RCxhQUFPQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JILFFBQWhCLENBQVA7QUFDQTs7QUFFRCxRQUFJLENBQUNmLFFBQVEsQ0FBQ2tCLE9BQVQsRUFBTCxFQUF5QjtBQUN4QixhQUFPRCxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JILFFBQWhCLENBQVA7QUFDQTs7QUFFRCxVQUFNUCxPQUFPLEdBQUdXLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IsS0FBS1osT0FBdkIsQ0FBaEI7O0FBRUEsUUFBSSxLQUFLRixVQUFMLEtBQW9CLE1BQXhCLEVBQWdDO0FBQy9CLFVBQUksUUFBQ1EsVUFBRCxDQUFKLEVBQXVCO0FBQ3RCTixRQUFBQSxPQUFPLENBQUNhLFNBQVIsR0FBb0IsSUFBcEI7QUFDQSxPQUZELE1BRU87QUFDTmIsUUFBQUEsT0FBTyxDQUFDYyxzQkFBUixHQUFpQyxJQUFqQztBQUNBO0FBQ0Q7O0FBRUQsV0FBTyxJQUFJTCxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVSyxNQUFWLEtBQXFCO0FBQ3ZDLFVBQUk7QUFDSCxZQUFJdkIsUUFBUSxDQUFDd0IsR0FBYixDQUFpQmhCLE9BQWpCLEVBQTBCaUIsTUFBMUIsQ0FBaUNWLFFBQWpDLEVBQTJDLENBQUNXLEdBQUQsRUFBTUMsTUFBTixLQUFpQjtBQUMzRCxjQUFJLFFBQUNELEdBQUQsQ0FBSixFQUFnQjtBQUNmLG1CQUFPSCxNQUFNLENBQUM7QUFDYkssY0FBQUEsSUFBSSxFQUFFZixVQURPO0FBRWJnQixjQUFBQSxPQUFPLEVBQUVILEdBQUcsQ0FBQyxDQUFEO0FBRkMsYUFBRCxDQUFiO0FBSUE7O0FBRUQsY0FBSSxPQUFBWixVQUFVLFlBQVVhLE1BQU0sQ0FBQ04sU0FBakIsQ0FBZCxFQUFnRDtBQUMvQyxtQkFBT0gsT0FBTyxDQUFDUyxNQUFNLENBQUNHLE1BQVIsQ0FBZDtBQUNBOztBQUVEQywyQkFBR0MsU0FBSCxDQUFjLEdBQUVsQixVQUFXLE1BQTNCLEVBQWtDYSxNQUFNLENBQUNOLFNBQXpDLEVBQ0VZLElBREYsQ0FDTyxNQUFNZixPQUFPLENBQUNTLE1BQU0sQ0FBQ0csTUFBUixDQURwQixFQUVFSSxLQUZGLENBRVFYLE1BRlI7QUFHQSxTQWZEO0FBZ0JBLE9BakJELENBaUJFLE9BQU9HLEdBQVAsRUFBWTtBQUNiLGVBQU9ILE1BQU0sQ0FBQ0csR0FBRCxDQUFiO0FBQ0E7QUFDRCxLQXJCTSxDQUFQO0FBc0JBOztBQXZEd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vUG9zdFByb2Nlc3NvcidcbmltcG9ydCAnLi4vU3VwcG9ydC9vcHRpb25hbCdcblxuaW1wb3J0IHsgRlMgfSBmcm9tICdncmluZC1zdXBwb3J0J1xuXG5jb25zdCBDbGVhbkNTUyA9IG9wdGlvbmFsKCdjbGVhbi1jc3MnLCAnPj00JylcblxuZXhwb3J0IGNsYXNzIENzc01pbmlmeVBvc3RQcm9jZXNzb3IgZXh0ZW5kcyBQb3N0UHJvY2Vzc29yIHtcblx0c3VwcG9ydGVkRXh0ZW5zaW9ucyA9IFsnY3NzJ11cblx0b3B0aW9ucyA9IHt9XG5cblx0Y29uc3RydWN0b3IoYXBwLCBzaG91bGRPcHRpbWl6ZSwgc291cmNlTWFwcykge1xuXHRcdHN1cGVyKGFwcCwgc2hvdWxkT3B0aW1pemUsIHNvdXJjZU1hcHMpXG5cblx0XHR0aGlzLm9wdGlvbnMgPSBhcHAuY29uZmlnLmdldCgnYXNzZXRzLnBvc3RfcHJvY2Vzc29ycy5jc3MubWluaWZ5Jywge30pXG5cblx0XHRpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5lbmFibGVkID09PSAnYm9vbGVhbicpIHtcblx0XHRcdHRoaXMuc2hvdWxkT3B0aW1pemUgPSB0aGlzLm9wdGlvbnMuZW5hYmxlZFxuXHRcdH1cblx0fVxuXG5cdHByb2Nlc3Moc291cmNlUGF0aCwgdGFyZ2V0UGF0aCwgY29udGVudHMpIHtcblx0XHRpZiAoIXRoaXMuc2hvdWxkT3B0aW1pemUgfHwgc291cmNlUGF0aC5pbmRleE9mKCcubWluLicpID49IDApIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoY29udGVudHMpXG5cdFx0fVxuXG5cdFx0aWYgKCFDbGVhbkNTUy5yZXNvbHZlKCkpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoY29udGVudHMpXG5cdFx0fVxuXG5cdFx0Y29uc3Qgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMub3B0aW9ucylcblxuXHRcdGlmICh0aGlzLnNvdXJjZU1hcHMgPT09ICdhdXRvJykge1xuXHRcdFx0aWYgKCF0YXJnZXRQYXRoLmlzTmlsKSB7XG5cdFx0XHRcdG9wdGlvbnMuc291cmNlTWFwID0gdHJ1ZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3B0aW9ucy5zb3VyY2VNYXBJbmxpbmVTb3VyY2VzID0gdHJ1ZVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRuZXcgQ2xlYW5DU1MucGtnKG9wdGlvbnMpLm1pbmlmeShjb250ZW50cywgKGVyciwgcmVzdWx0KSA9PiB7XG5cdFx0XHRcdFx0aWYgKCFlcnIuaXNOaWwpIHtcblx0XHRcdFx0XHRcdHJldHVybiByZWplY3Qoe1xuXHRcdFx0XHRcdFx0XHRmaWxlOiBzb3VyY2VQYXRoLFxuXHRcdFx0XHRcdFx0XHRtZXNzYWdlOiBlcnJbMF0sXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICh0YXJnZXRQYXRoLmlzTmlsIHx8IHJlc3VsdC5zb3VyY2VNYXAuaXNOaWwpIHtcblx0XHRcdFx0XHRcdHJldHVybiByZXNvbHZlKHJlc3VsdC5zdHlsZXMpXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0RlMud3JpdGVGaWxlKGAke3RhcmdldFBhdGh9Lm1hcGAsIHJlc3VsdC5zb3VyY2VNYXApXG5cdFx0XHRcdFx0XHQudGhlbigoKSA9PiByZXNvbHZlKHJlc3VsdC5zdHlsZXMpKVxuXHRcdFx0XHRcdFx0LmNhdGNoKHJlamVjdClcblx0XHRcdFx0fSlcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRyZXR1cm4gcmVqZWN0KGVycilcblx0XHRcdH1cblx0XHR9KVxuXHR9XG59XG4iXX0=