diff --git a/packages/webpack-cli/lib/webpack-cli.js b/packages/webpack-cli/lib/webpack-cli.js index d661a7cb865..52c9cc5e9e4 100644 --- a/packages/webpack-cli/lib/webpack-cli.js +++ b/packages/webpack-cli/lib/webpack-cli.js @@ -96,8 +96,6 @@ class WebpackCLI { finalMode = configMode; } else if (NODE_ENV && (NODE_ENV === PRODUCTION || NODE_ENV === DEVELOPMENT)) { finalMode = NODE_ENV; - } else { - finalMode = PRODUCTION; } return finalMode; }; @@ -177,10 +175,16 @@ class WebpackCLI { // Todo - handle multi config for all flags finalOptions.options = configOptions.map(() => ({ ...finalOptions.options })); configOptions.forEach((configObject, index) => { - finalOptions.options[index].mode = assignMode(mode, configObject); + const resolvedMode = assignMode(mode, configObject); + if (resolvedMode) { + finalOptions.options[index].mode = resolvedMode; + } }); } else { - finalOptions.options.mode = assignMode(mode, configOptions); + const resolvedMode = assignMode(mode, configOptions); + if (resolvedMode) { + finalOptions.options.mode = resolvedMode; + } } return finalOptions; } diff --git a/test/mode/mode-single-arg/mode-single-arg.test.js b/test/mode/mode-single-arg/mode-single-arg.test.js index c3577ac844c..d586c687049 100644 --- a/test/mode/mode-single-arg/mode-single-arg.test.js +++ b/test/mode/mode-single-arg/mode-single-arg.test.js @@ -2,12 +2,13 @@ const { run } = require('../../utils/test-utils'); describe('mode flags', () => { - it('should set mode=production by default', () => { + it('should not set mode=production by default', () => { const { stderr, stdout, exitCode } = run(__dirname); expect(exitCode).toBe(0); expect(stderr).toBeFalsy(); - expect(stdout).toContain(`mode: 'production'`); + expect(stdout).not.toContain(`mode: 'production'`); + expect(stdout).toContain(`The 'mode' option has not been set, webpack will fallback to 'production' for this value.`); }); it('should load a development config when --mode=development is passed', () => {