“use strict”;
function log(type, value) {
console.log('STATUS:', JSON.stringify({type, value}));
}
function WebpackDriverStatusPlugin(options) {
this.options = options;
}
WebpackDriverStatusPlugin.prototype.apply = function(compiler) {
var timer; if ( compiler.options.devServer ) { let {port, host, outputPath} = compiler.options.devServer; log("dev-server", { port, host, outputPath }); } compiler.plugin("compile", function() { log("status", "compiling"); }); compiler.plugin("invalid", function() { log("status", "invalid"); }); compiler.plugin("after-environment", function() { log("config", { output_path: compiler.options.output.path }); }) compiler.plugin("failed-module", function(module) { log("failed-module", module); }); compiler.plugin("done", function(stats) { if (stats.compilation.errors && stats.compilation.errors.length){ log("status", "invalid"); for(var i = 0; i < stats.compilation.errors.length; i++){ var err = stats.compilation.errors[i]; log("error", { name: err.name, message: err.message, resource: err.module ? err.module.resource : '' }); } } else { log("status", "success"); } }); compiler.plugin("failed", function() { log("status", "failed"); }); compiler.plugin("valid", function() { log("status", "valid"); }); // https://gist.github.com/kisenka/b31d3dd1d1a9182dde0bb3e3efe1a038 compiler.plugin("emit", function(compilation, callback) { const chunks = compilation.getStats().toJson().chunks; chunks.forEach(function(chunk) { if (chunk.names.length && chunk.initial) { log("asset", { id: chunk.names[0], files: chunk.files, size: chunk.size }); } }); callback(); });
}
module.exports = WebpackDriverStatusPlugin;