prepend plugins instead of append when defined through CLI

closes #4260
This commit is contained in:
Esben Petersen 2017-07-24 14:40:19 +02:00
parent e72a88af7a
commit 2fdd833519
1 changed files with 14 additions and 10 deletions

View File

@ -283,6 +283,10 @@ module.exports = function(yargs, argv, convertOptions) {
}
}
function addPlugin(options, plugin) {
options.plugins.unshift(plugin);
}
ifArgPair("entry", function(name, entry) {
if(typeof options.entry[name] !== "undefined" && options.entry[name] !== null) {
options.entry[name] = [].concat(options.entry[name]).concat(entry);
@ -330,7 +334,7 @@ module.exports = function(yargs, argv, convertOptions) {
}, function() {
ensureArray(options, "plugins");
var DefinePlugin = require("../lib/DefinePlugin");
options.plugins.push(new DefinePlugin(defineObject));
addPlugin(options, new DefinePlugin(defineObject));
});
ifArg("output-path", function(value) {
@ -400,13 +404,13 @@ module.exports = function(yargs, argv, convertOptions) {
ifBooleanArg("hot", function() {
ensureArray(options, "plugins");
var HotModuleReplacementPlugin = require("../lib/HotModuleReplacementPlugin");
options.plugins.push(new HotModuleReplacementPlugin());
addPlugin(options, new HotModuleReplacementPlugin());
});
ifBooleanArg("debug", function() {
ensureArray(options, "plugins");
var LoaderOptionsPlugin = require("../lib/LoaderOptionsPlugin");
options.plugins.push(new LoaderOptionsPlugin({
addPlugin(options, new LoaderOptionsPlugin({
debug: true
}));
});
@ -440,7 +444,7 @@ module.exports = function(yargs, argv, convertOptions) {
ifArg("optimize-max-chunks", function(value) {
ensureArray(options, "plugins");
var LimitChunkCountPlugin = require("../lib/optimize/LimitChunkCountPlugin");
options.plugins.push(new LimitChunkCountPlugin({
addPlugin(options, new LimitChunkCountPlugin({
maxChunks: parseInt(value, 10)
}));
});
@ -448,7 +452,7 @@ module.exports = function(yargs, argv, convertOptions) {
ifArg("optimize-min-chunk-size", function(value) {
ensureArray(options, "plugins");
var MinChunkSizePlugin = require("../lib/optimize/MinChunkSizePlugin");
options.plugins.push(new MinChunkSizePlugin({
addPlugin(options, new MinChunkSizePlugin({
minChunkSize: parseInt(value, 10)
}));
});
@ -457,10 +461,10 @@ module.exports = function(yargs, argv, convertOptions) {
ensureArray(options, "plugins");
var UglifyJsPlugin = require("../lib/optimize/UglifyJsPlugin");
var LoaderOptionsPlugin = require("../lib/LoaderOptionsPlugin");
options.plugins.push(new UglifyJsPlugin({
addPlugin(options, new UglifyJsPlugin({
sourceMap: options.devtool && (options.devtool.indexOf("sourcemap") >= 0 || options.devtool.indexOf("source-map") >= 0)
}));
options.plugins.push(new LoaderOptionsPlugin({
addPlugin(options, new LoaderOptionsPlugin({
minimize: true
}));
});
@ -468,7 +472,7 @@ module.exports = function(yargs, argv, convertOptions) {
ifArg("prefetch", function(request) {
ensureArray(options, "plugins");
var PrefetchPlugin = require("../lib/PrefetchPlugin");
options.plugins.push(new PrefetchPlugin(request));
addPlugin(options, new PrefetchPlugin(request));
});
ifArg("provide", function(value) {
@ -482,12 +486,12 @@ module.exports = function(yargs, argv, convertOptions) {
name = value;
}
var ProvidePlugin = require("../lib/ProvidePlugin");
options.plugins.push(new ProvidePlugin(name, value));
addPlugin(options, new ProvidePlugin(name, value));
});
ifArg("plugin", function(value) {
ensureArray(options, "plugins");
options.plugins.push(loadPlugin(value));
addPlugin(options, loadPlugin(value));
});
mapArgToBoolean("bail");