html-critical-webpack-plugin
Version:
Webpack plugin for the critical CSS inliner library.
28 lines (21 loc) • 733 B
JavaScript
const path = require('path');
const critical = require('critical');
class HtmlCriticalWebpackPlugin {
constructor(options) {
this.options = options;
}
emit(compilation, callback) {
const css = Object.keys(compilation.assets)
.filter(function (filename) { return /\.css$/.test(filename); })
.map(function (filename) { return path.join(compilation.outputOptions.path, filename); });
critical.generate(Object.assign({ css }, this.options), (err) => {
callback(err);
});
}
apply(compiler) {
compiler.hooks.afterEmit.tapAsync('HtmlCriticalWebpackPlugin', (compilation, callback) => {
this.emit(compilation, callback);
});
}
}
module.exports = HtmlCriticalWebpackPlugin;