grind-assets
Version:
Asset management for Grind
76 lines (59 loc) • 7.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CssPostCssPostProcessor = void 0;
var _PostProcessor = require("./PostProcessor.js");
var _makeSyntaxError = require("../Errors/makeSyntaxError.js");
var _optional = require("../Support/optional.js");
function _isnil(val) { return val === null || typeof val === 'undefined'; }
const PostCSS = (0, _optional.optional)('postcss', '>=7.0.0');
class CssPostCssPostProcessor extends _PostProcessor.PostProcessor {
constructor(app, shouldOptimize, sourceMaps) {
super(app, shouldOptimize, sourceMaps);
this.priority = 100;
this.supportedExtensions = ['css'];
this.plugins = [];
this.options = {};
const plugins = app.config.get('assets.post_processors.css.postcss', {});
for (const [plugin, config] of Object.entries(plugins)) {
if (config === false) {
continue;
}
this.plugins.push([(0, _optional.optional)(plugin), config]);
}
}
process(sourcePath, targetPath, contents) {
if (this.plugins.length === 0 || !PostCSS.resolve()) {
return Promise.resolve(contents);
}
const plugins = [];
for (const [plugin, config] of this.plugins) {
if (!plugin.resolve()) {
continue;
}
if (!_isnil(config) && typeof config === 'object') {
plugins.push(plugin.pkg(config));
} else {
plugins.push(plugin.pkg);
}
}
return PostCSS.pkg(plugins).process(contents, {
from: sourcePath,
to: targetPath,
map: this.sourceMaps === false ? false : {
inline: true
}
}).then(result => result.css).catch(async err => {
if (typeof err.file !== 'string') {
err.file = (err.input || {}).file || sourcePath;
}
throw await (0, _makeSyntaxError.makeSyntaxError)(this.app, {
message: err.reason || err.message,
causedBy: err
});
});
}
}
exports.CssPostCssPostProcessor = CssPostCssPostProcessor;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Qb3N0UHJvY2Vzc29ycy9Dc3NQb3N0Q3NzUG9zdFByb2Nlc3Nvci5qcyJdLCJuYW1lcyI6WyJQb3N0Q1NTIiwiQ3NzUG9zdENzc1Bvc3RQcm9jZXNzb3IiLCJQb3N0UHJvY2Vzc29yIiwiY29uc3RydWN0b3IiLCJhcHAiLCJzaG91bGRPcHRpbWl6ZSIsInNvdXJjZU1hcHMiLCJwcmlvcml0eSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiLCJwbHVnaW5zIiwib3B0aW9ucyIsImNvbmZpZyIsImdldCIsInBsdWdpbiIsIk9iamVjdCIsImVudHJpZXMiLCJwdXNoIiwicHJvY2VzcyIsInNvdXJjZVBhdGgiLCJ0YXJnZXRQYXRoIiwiY29udGVudHMiLCJsZW5ndGgiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInBrZyIsImZyb20iLCJ0byIsIm1hcCIsImlubGluZSIsInRoZW4iLCJyZXN1bHQiLCJjc3MiLCJjYXRjaCIsImVyciIsImZpbGUiLCJpbnB1dCIsIm1lc3NhZ2UiLCJyZWFzb24iLCJjYXVzZWRCeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsTUFBTUEsT0FBTyxHQUFHLHdCQUFTLFNBQVQsRUFBb0IsU0FBcEIsQ0FBaEI7O0FBRU8sTUFBTUMsdUJBQU4sU0FBc0NDLDRCQUF0QyxDQUFvRDtBQU0xREMsRUFBQUEsV0FBVyxDQUFDQyxHQUFELEVBQU1DLGNBQU4sRUFBc0JDLFVBQXRCLEVBQWtDO0FBQzVDLFVBQU1GLEdBQU4sRUFBV0MsY0FBWCxFQUEyQkMsVUFBM0I7QUFENEMsU0FMN0NDLFFBSzZDLEdBTGxDLEdBS2tDO0FBQUEsU0FKN0NDLG1CQUk2QyxHQUp2QixDQUFDLEtBQUQsQ0FJdUI7QUFBQSxTQUg3Q0MsT0FHNkMsR0FIbkMsRUFHbUM7QUFBQSxTQUY3Q0MsT0FFNkMsR0FGbkMsRUFFbUM7QUFHNUMsVUFBTUQsT0FBTyxHQUFHTCxHQUFHLENBQUNPLE1BQUosQ0FBV0MsR0FBWCxDQUFlLG9DQUFmLEVBQXFELEVBQXJELENBQWhCOztBQUVBLFNBQUssTUFBTSxDQUFDQyxNQUFELEVBQVNGLE1BQVQsQ0FBWCxJQUErQkcsTUFBTSxDQUFDQyxPQUFQLENBQWVOLE9BQWYsQ0FBL0IsRUFBd0Q7QUFDdkQsVUFBSUUsTUFBTSxLQUFLLEtBQWYsRUFBc0I7QUFDckI7QUFDQTs7QUFFRCxXQUFLRixPQUFMLENBQWFPLElBQWIsQ0FBa0IsQ0FBQyx3QkFBU0gsTUFBVCxDQUFELEVBQW1CRixNQUFuQixDQUFsQjtBQUNBO0FBQ0Q7O0FBRURNLEVBQUFBLE9BQU8sQ0FBQ0MsVUFBRCxFQUFhQyxVQUFiLEVBQXlCQyxRQUF6QixFQUFtQztBQUN6QyxRQUFJLEtBQUtYLE9BQUwsQ0FBYVksTUFBYixLQUF3QixDQUF4QixJQUE2QixDQUFDckIsT0FBTyxDQUFDc0IsT0FBUixFQUFsQyxFQUFxRDtBQUNwRCxhQUFPQyxPQUFPLENBQUNELE9BQVIsQ0FBZ0JGLFFBQWhCLENBQVA7QUFDQTs7QUFFRCxVQUFNWCxPQUFPLEdBQUcsRUFBaEI7O0FBRUEsU0FBSyxNQUFNLENBQUNJLE1BQUQsRUFBU0YsTUFBVCxDQUFYLElBQStCLEtBQUtGLE9BQXBDLEVBQTZDO0FBQzVDLFVBQUksQ0FBQ0ksTUFBTSxDQUFDUyxPQUFQLEVBQUwsRUFBdUI7QUFDdEI7QUFDQTs7QUFFRCxVQUFJLFFBQUNYLE1BQUQsS0FBaUIsT0FBT0EsTUFBUCxLQUFrQixRQUF2QyxFQUFpRDtBQUNoREYsUUFBQUEsT0FBTyxDQUFDTyxJQUFSLENBQWFILE1BQU0sQ0FBQ1csR0FBUCxDQUFXYixNQUFYLENBQWI7QUFDQSxPQUZELE1BRU87QUFDTkYsUUFBQUEsT0FBTyxDQUFDTyxJQUFSLENBQWFILE1BQU0sQ0FBQ1csR0FBcEI7QUFDQTtBQUNEOztBQUVELFdBQU94QixPQUFPLENBQUN3QixHQUFSLENBQVlmLE9BQVosRUFDTFEsT0FESyxDQUNHRyxRQURILEVBQ2E7QUFDbEJLLE1BQUFBLElBQUksRUFBRVAsVUFEWTtBQUVsQlEsTUFBQUEsRUFBRSxFQUFFUCxVQUZjO0FBR2xCUSxNQUFBQSxHQUFHLEVBQ0YsS0FBS3JCLFVBQUwsS0FBb0IsS0FBcEIsR0FDRyxLQURILEdBRUc7QUFDQXNCLFFBQUFBLE1BQU0sRUFBRTtBQURSO0FBTmMsS0FEYixFQVdMQyxJQVhLLENBV0FDLE1BQU0sSUFBSUEsTUFBTSxDQUFDQyxHQVhqQixFQVlMQyxLQVpLLENBWUMsTUFBTUMsR0FBTixJQUFhO0FBQ25CLFVBQUksT0FBT0EsR0FBRyxDQUFDQyxJQUFYLEtBQW9CLFFBQXhCLEVBQWtDO0FBQ2pDRCxRQUFBQSxHQUFHLENBQUNDLElBQUosR0FBVyxDQUFDRCxHQUFHLENBQUNFLEtBQUosSUFBYSxFQUFkLEVBQWtCRCxJQUFsQixJQUEwQmhCLFVBQXJDO0FBQ0E7O0FBRUQsWUFBTSxNQUFNLHNDQUFnQixLQUFLZCxHQUFyQixFQUEwQjtBQUNyQ2dDLFFBQUFBLE9BQU8sRUFBRUgsR0FBRyxDQUFDSSxNQUFKLElBQWNKLEdBQUcsQ0FBQ0csT0FEVTtBQUVyQ0UsUUFBQUEsUUFBUSxFQUFFTDtBQUYyQixPQUExQixDQUFaO0FBSUEsS0FyQkssQ0FBUDtBQXNCQTs7QUE3RHlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL1Bvc3RQcm9jZXNzb3InXG5cbmltcG9ydCAnLi4vRXJyb3JzL21ha2VTeW50YXhFcnJvcidcbmltcG9ydCAnLi4vU3VwcG9ydC9vcHRpb25hbCdcblxuY29uc3QgUG9zdENTUyA9IG9wdGlvbmFsKCdwb3N0Y3NzJywgJz49Ny4wLjAnKVxuXG5leHBvcnQgY2xhc3MgQ3NzUG9zdENzc1Bvc3RQcm9jZXNzb3IgZXh0ZW5kcyBQb3N0UHJvY2Vzc29yIHtcblx0cHJpb3JpdHkgPSAxMDBcblx0c3VwcG9ydGVkRXh0ZW5zaW9ucyA9IFsnY3NzJ11cblx0cGx1Z2lucyA9IFtdXG5cdG9wdGlvbnMgPSB7fVxuXG5cdGNvbnN0cnVjdG9yKGFwcCwgc2hvdWxkT3B0aW1pemUsIHNvdXJjZU1hcHMpIHtcblx0XHRzdXBlcihhcHAsIHNob3VsZE9wdGltaXplLCBzb3VyY2VNYXBzKVxuXG5cdFx0Y29uc3QgcGx1Z2lucyA9IGFwcC5jb25maWcuZ2V0KCdhc3NldHMucG9zdF9wcm9jZXNzb3JzLmNzcy5wb3N0Y3NzJywge30pXG5cblx0XHRmb3IgKGNvbnN0IFtwbHVnaW4sIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXMocGx1Z2lucykpIHtcblx0XHRcdGlmIChjb25maWcgPT09IGZhbHNlKSB7XG5cdFx0XHRcdGNvbnRpbnVlXG5cdFx0XHR9XG5cblx0XHRcdHRoaXMucGx1Z2lucy5wdXNoKFtvcHRpb25hbChwbHVnaW4pLCBjb25maWddKVxuXHRcdH1cblx0fVxuXG5cdHByb2Nlc3Moc291cmNlUGF0aCwgdGFyZ2V0UGF0aCwgY29udGVudHMpIHtcblx0XHRpZiAodGhpcy5wbHVnaW5zLmxlbmd0aCA9PT0gMCB8fCAhUG9zdENTUy5yZXNvbHZlKCkpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoY29udGVudHMpXG5cdFx0fVxuXG5cdFx0Y29uc3QgcGx1Z2lucyA9IFtdXG5cblx0XHRmb3IgKGNvbnN0IFtwbHVnaW4sIGNvbmZpZ10gb2YgdGhpcy5wbHVnaW5zKSB7XG5cdFx0XHRpZiAoIXBsdWdpbi5yZXNvbHZlKCkpIHtcblx0XHRcdFx0Y29udGludWVcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFjb25maWcuaXNOaWwgJiYgdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0cGx1Z2lucy5wdXNoKHBsdWdpbi5wa2coY29uZmlnKSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBsdWdpbnMucHVzaChwbHVnaW4ucGtnKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBQb3N0Q1NTLnBrZyhwbHVnaW5zKVxuXHRcdFx0LnByb2Nlc3MoY29udGVudHMsIHtcblx0XHRcdFx0ZnJvbTogc291cmNlUGF0aCxcblx0XHRcdFx0dG86IHRhcmdldFBhdGgsXG5cdFx0XHRcdG1hcDpcblx0XHRcdFx0XHR0aGlzLnNvdXJjZU1hcHMgPT09IGZhbHNlXG5cdFx0XHRcdFx0XHQ/IGZhbHNlXG5cdFx0XHRcdFx0XHQ6IHtcblx0XHRcdFx0XHRcdFx0XHRpbmxpbmU6IHRydWUsXG5cdFx0XHRcdFx0XHQgIH0sXG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4ocmVzdWx0ID0+IHJlc3VsdC5jc3MpXG5cdFx0XHQuY2F0Y2goYXN5bmMgZXJyID0+IHtcblx0XHRcdFx0aWYgKHR5cGVvZiBlcnIuZmlsZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRlcnIuZmlsZSA9IChlcnIuaW5wdXQgfHwge30pLmZpbGUgfHwgc291cmNlUGF0aFxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhyb3cgYXdhaXQgbWFrZVN5bnRheEVycm9yKHRoaXMuYXBwLCB7XG5cdFx0XHRcdFx0bWVzc2FnZTogZXJyLnJlYXNvbiB8fCBlcnIubWVzc2FnZSxcblx0XHRcdFx0XHRjYXVzZWRCeTogZXJyLFxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0fVxufVxuIl19