Ich auch so etwas benötigt, so kompilierte ich ein super einfaches Plugin Shell Anweisungen vor und nach jedem Build auszuführen.
'use strict';
var exec = require('child_process').exec;
function puts(error, stdout, stderr) {
console.log(stdout);
}
function WebpackShellPlugin(options) {
var defaultOptions = {
onBuildStart: [],
onBuildEnd: []
};
this.options = Object.assign(defaultOptions, options);
}
WebpackShellPlugin.prototype.apply = function(compiler) {
const options = this.options;
compiler.plugin("compilation", compilation => {
if(options.onBuildStart.length){
console.log("Executing pre-build scripts");
options.onBuildStart.forEach(script => exec(script, puts));
}
});
compiler.plugin("emit", (compilation, callback) => {
if(options.onBuildEnd.length){
console.log("Executing post-build scripts");
options.onBuildEnd.forEach(script => exec(script, puts));
}
callback();
});
};
module.exports = WebpackShellPlugin;
dann in Ihrem webpack config:
plugins: [
new WebpackShellPlugin({
onBuildStart: ['echo "hello world"'],
onBuildEnd: ['echo "goodbye world"']
})
]
Das ist super einfach, und keine Unterstützung für Asynchron-Skripte richtig. Aber es funktioniert. Fühlen Sie sich frei zu ändern, wie Sie es für richtig halten.
Betrachten Sie diesen Code unter MIT-Lizenz.
Benötigt Knoten 4.x und bis zum Ausführen, wie ich einige es6 Funktionen hier verwenden.
Dank, das war das fehlende Glied. Ich bin irgendwie im Kreis gelaufen und habe diese Option komplett verpasst. – Monokai