Skip to content

Commit 346a518

Browse files
authoredDec 4, 2022
fix: make define-process-env-node-env alias node-env (#3514)
* fix: make define-process-env-node-env alias node-env * test: update snapshots * test: update snapshots * fix: add todo
1 parent 3ec7b16 commit 346a518

File tree

12 files changed

+195
-79
lines changed

12 files changed

+195
-79
lines changed
 

‎OPTIONS.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ Options:
1010
-m, --merge Merge two or more configurations using 'webpack-merge'.
1111
--disable-interpret Disable interpret for loading the config file.
1212
--env <value...> Environment passed to the configuration when it is a function.
13-
--define-process-env-node-env <value> Sets process.env.NODE_ENV to the specified value.
13+
--node-env <value> Sets process.env.NODE_ENV to the specified value.
14+
--define-process-env-node-env <value> Sets process.env.NODE_ENV to the specified value. (Currently an alias for `--node-env`)
1415
--analyze It invokes webpack-bundle-analyzer plugin to get bundle information.
1516
--progress [value] Print compilation progress during build.
1617
-j, --json [value] Prints result as JSON or store it in a file.

‎SERVE-OPTIONS-v4.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ Options:
99
-m, --merge Merge two or more configurations using 'webpack-merge'.
1010
--disable-interpret Disable interpret for loading the config file.
1111
--env <value...> Environment passed to the configuration when it is a function.
12-
--define-process-env-node-env <value> Sets process.env.NODE_ENV to the specified value.
12+
--node-env <value> Sets process.env.NODE_ENV to the specified value.
13+
--define-process-env-node-env <value> Sets process.env.NODE_ENV to the specified value. (Currently an alias for `--node-env`)
1314
--analyze It invokes webpack-bundle-analyzer plugin to get bundle information.
1415
--progress [value] Print compilation progress during build.
1516
-j, --json [value] Prints result as JSON or store it in a file.

‎packages/generators/init-template/default/package.json.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module.exports = (isUsingDevServer) => {
22
const scripts = {
3-
build: "webpack --mode=production --define-process-env-node-env=production",
3+
build: "webpack --mode=production --node-env=production",
44
"build:dev": "webpack --mode=development",
5-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
5+
"build:prod": "webpack --mode=production --node-env=production",
66
watch: "webpack --watch",
77
};
88
if (isUsingDevServer) {

‎packages/generators/init-template/react/package.json.tpl

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
"description": "My webpack project",
44
"name": "my-webpack-project",
55
"scripts": {
6-
"build": "webpack --mode=production --define-process-env-node-env=production",
6+
"build": "webpack --mode=production --node-env=production",
77
"build:dev": "webpack --mode=development",
8-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
8+
"build:prod": "webpack --mode=production --node-env=production",
99
"watch": "webpack --watch",
1010
"serve": "webpack serve"
1111
}

‎packages/webpack-cli/README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ Options:
8484
-m, --merge Merge two or more configurations using 'webpack-merge'.
8585
--disable-interpret Disable interpret for loading the config file.
8686
--env <value...> Environment passed to the configuration when it is a function.
87-
--define-process-env-node-env <value> Sets process.env.NODE_ENV to the specified value.
87+
--node-env <value> Sets process.env.NODE_ENV to the specified value.
88+
--define-process-env-node-env <value> Sets process.env.NODE_ENV to the specified value. (Currently an alias for `--node-env`)
8889
--analyze It invokes webpack-bundle-analyzer plugin to get bundle information.
8990
--progress [value] Print compilation progress during build.
9091
-j, --json [value] Prints result as JSON or store it in a file.

‎packages/webpack-cli/src/webpack-cli.ts

+15-1
Original file line numberDiff line numberDiff line change
@@ -890,7 +890,7 @@ class WebpackCLI implements IWebpackCLI {
890890
description: "Environment passed to the configuration when it is a function.",
891891
},
892892
{
893-
name: "define-process-env-node-env",
893+
name: "node-env",
894894
configs: [
895895
{
896896
type: "string",
@@ -899,6 +899,17 @@ class WebpackCLI implements IWebpackCLI {
899899
multiple: false,
900900
description: "Sets process.env.NODE_ENV to the specified value.",
901901
},
902+
{
903+
name: "define-process-env-node-env",
904+
configs: [
905+
{
906+
type: "string",
907+
},
908+
],
909+
multiple: false,
910+
description:
911+
"Sets process.env.NODE_ENV to the specified value. (Currently an alias for `--node-env`)",
912+
},
902913

903914
// Adding more plugins
904915
{
@@ -2176,7 +2187,10 @@ class WebpackCLI implements IWebpackCLI {
21762187
callback?: Callback<[Error | undefined, WebpackCLIStats | undefined]>,
21772188
): Promise<WebpackCompiler> {
21782189
if (typeof options.defineProcessEnvNodeEnv === "string") {
2190+
// TODO: This should only set NODE_ENV for the runtime not for the config too. Change this during next breaking change.
21792191
process.env.NODE_ENV = options.defineProcessEnvNodeEnv;
2192+
} else if (typeof options.nodeEnv === "string") {
2193+
process.env.NODE_ENV = options.nodeEnv;
21802194
}
21812195

21822196
let config = await this.loadConfig(options);
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const WebpackCLITestPlugin = require("../../utils/webpack-cli-test-plugin");
2+
3+
module.exports = {
4+
plugins: [new WebpackCLITestPlugin()],
5+
};

‎test/build/node-env/node-env.test.js

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
"use strict";
2+
3+
const { run } = require("../../utils/test-utils");
4+
5+
describe("--node-env flag", () => {
6+
it('should set "process.env.NODE_ENV" to "development"', async () => {
7+
const { exitCode, stderr, stdout } = await run(__dirname, ["--node-env", "development"]);
8+
9+
expect(exitCode).toBe(0);
10+
expect(stderr).toBeFalsy();
11+
expect(stdout).toContain("mode: 'development'");
12+
});
13+
14+
it('should set "process.env.NODE_ENV" to "production"', async () => {
15+
const { exitCode, stderr, stdout } = await run(__dirname, ["--node-env", "production"]);
16+
17+
expect(exitCode).toBe(0);
18+
expect(stderr).toBeFalsy();
19+
expect(stdout).toContain("mode: 'production'");
20+
});
21+
22+
it('should set "process.env.NODE_ENV" to "none"', async () => {
23+
const { exitCode, stderr, stdout } = await run(__dirname, ["--node-env", "none"]);
24+
25+
expect(exitCode).toBe(0);
26+
expect(stderr).toBeFalsy();
27+
expect(stdout).toContain("mode: 'none'");
28+
});
29+
30+
it('should set "process.env.NODE_ENV" and the "mode" option to "development"', async () => {
31+
const { exitCode, stderr, stdout } = await run(__dirname, [
32+
"--node-env",
33+
"development",
34+
"--config",
35+
"./auto-mode.config.js",
36+
]);
37+
38+
expect(exitCode).toBe(0);
39+
expect(stderr).toBeFalsy();
40+
expect(stdout).toContain("mode: 'development'");
41+
});
42+
43+
it('should set "process.env.NODE_ENV" and the "mode" option to "production"', async () => {
44+
const { exitCode, stderr, stdout } = await run(__dirname, [
45+
"--node-env",
46+
"production",
47+
"--config",
48+
"./auto-mode.config.js",
49+
]);
50+
51+
expect(exitCode).toBe(0);
52+
expect(stderr).toBeFalsy();
53+
expect(stdout).toContain("mode: 'production'");
54+
});
55+
56+
it('should set "process.env.NODE_ENV" and the "mode" option to "none"', async () => {
57+
const { exitCode, stderr, stdout } = await run(__dirname, [
58+
"--node-env",
59+
"none",
60+
"--config",
61+
"./auto-mode.config.js",
62+
]);
63+
64+
expect(exitCode).toBe(0);
65+
expect(stderr).toBeFalsy();
66+
expect(stdout).toContain("mode: 'none'");
67+
});
68+
});

‎test/build/node-env/src/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log('--node-env test');

‎test/build/node-env/webpack.config.js

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
const WebpackCLITestPlugin = require("../../utils/webpack-cli-test-plugin");
2+
3+
module.exports = {
4+
mode: process.env.NODE_ENV,
5+
plugins: [new WebpackCLITestPlugin()],
6+
};

‎test/help/__snapshots__/help.test.js.snap.devServer4.webpack5

+38-19
Large diffs are not rendered by default.

‎test/init/__snapshots__/init.test.js.snap.webpack5

+52-52
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ exports[`init command recognizes '-f' as an alias for '--force' 1`] = `
1212
},
1313
"name": "my-webpack-project",
1414
"scripts": {
15-
"build": "webpack --mode=production --define-process-env-node-env=production",
15+
"build": "webpack --mode=production --node-env=production",
1616
"build:dev": "webpack --mode=development",
17-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
17+
"build:prod": "webpack --mode=production --node-env=production",
1818
"serve": "webpack serve",
1919
"watch": "webpack --watch",
2020
},
@@ -34,9 +34,9 @@ exports[`init command recognizes '-t' as an alias for '--template' 1`] = `
3434
},
3535
"name": "my-webpack-project",
3636
"scripts": {
37-
"build": "webpack --mode=production --define-process-env-node-env=production",
37+
"build": "webpack --mode=production --node-env=production",
3838
"build:dev": "webpack --mode=development",
39-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
39+
"build:prod": "webpack --mode=production --node-env=production",
4040
"serve": "webpack serve",
4141
"watch": "webpack --watch",
4242
},
@@ -56,9 +56,9 @@ exports[`init command should ask question when wrong template is supplied 1`] =
5656
},
5757
"name": "my-webpack-project",
5858
"scripts": {
59-
"build": "webpack --mode=production --define-process-env-node-env=production",
59+
"build": "webpack --mode=production --node-env=production",
6060
"build:dev": "webpack --mode=development",
61-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
61+
"build:prod": "webpack --mode=production --node-env=production",
6262
"serve": "webpack serve",
6363
"watch": "webpack --watch",
6464
},
@@ -76,9 +76,9 @@ exports[`init command should configure WDS as opted 1`] = `
7676
},
7777
"name": "my-webpack-project",
7878
"scripts": {
79-
"build": "webpack --mode=production --define-process-env-node-env=production",
79+
"build": "webpack --mode=production --node-env=production",
8080
"build:dev": "webpack --mode=development",
81-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
81+
"build:prod": "webpack --mode=production --node-env=production",
8282
"serve": "webpack serve",
8383
"watch": "webpack --watch",
8484
},
@@ -142,9 +142,9 @@ exports[`init command should configure assets modules by default 1`] = `
142142
},
143143
"name": "my-webpack-project",
144144
"scripts": {
145-
"build": "webpack --mode=production --define-process-env-node-env=production",
145+
"build": "webpack --mode=production --node-env=production",
146146
"build:dev": "webpack --mode=development",
147-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
147+
"build:prod": "webpack --mode=production --node-env=production",
148148
"serve": "webpack serve",
149149
"watch": "webpack --watch",
150150
},
@@ -214,9 +214,9 @@ exports[`init command should configure html-webpack-plugin as opted 1`] = `
214214
},
215215
"name": "my-webpack-project",
216216
"scripts": {
217-
"build": "webpack --mode=production --define-process-env-node-env=production",
217+
"build": "webpack --mode=production --node-env=production",
218218
"build:dev": "webpack --mode=development",
219-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
219+
"build:prod": "webpack --mode=production --node-env=production",
220220
"watch": "webpack --watch",
221221
},
222222
"version": "1.0.0",
@@ -279,9 +279,9 @@ exports[`init command should configure workbox-webpack-plugin as opted 1`] = `
279279
},
280280
"name": "my-webpack-project",
281281
"scripts": {
282-
"build": "webpack --mode=production --define-process-env-node-env=production",
282+
"build": "webpack --mode=production --node-env=production",
283283
"build:dev": "webpack --mode=development",
284-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
284+
"build:prod": "webpack --mode=production --node-env=production",
285285
"watch": "webpack --watch",
286286
},
287287
"version": "1.0.0",
@@ -348,9 +348,9 @@ exports[`init command should generate ES6 project correctly 1`] = `
348348
},
349349
"name": "my-webpack-project",
350350
"scripts": {
351-
"build": "webpack --mode=production --define-process-env-node-env=production",
351+
"build": "webpack --mode=production --node-env=production",
352352
"build:dev": "webpack --mode=development",
353-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
353+
"build:prod": "webpack --mode=production --node-env=production",
354354
"watch": "webpack --watch",
355355
},
356356
"version": "1.0.0",
@@ -413,9 +413,9 @@ exports[`init command should generate default project when nothing is passed 1`]
413413
},
414414
"name": "my-webpack-project",
415415
"scripts": {
416-
"build": "webpack --mode=production --define-process-env-node-env=production",
416+
"build": "webpack --mode=production --node-env=production",
417417
"build:dev": "webpack --mode=development",
418-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
418+
"build:prod": "webpack --mode=production --node-env=production",
419419
"serve": "webpack serve",
420420
"watch": "webpack --watch",
421421
},
@@ -435,9 +435,9 @@ exports[`init command should generate folders if non existing generation path is
435435
},
436436
"name": "my-webpack-project",
437437
"scripts": {
438-
"build": "webpack --mode=production --define-process-env-node-env=production",
438+
"build": "webpack --mode=production --node-env=production",
439439
"build:dev": "webpack --mode=development",
440-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
440+
"build:prod": "webpack --mode=production --node-env=production",
441441
"serve": "webpack serve",
442442
"watch": "webpack --watch",
443443
},
@@ -457,9 +457,9 @@ exports[`init command should generate project when generationPath is supplied 1`
457457
},
458458
"name": "my-webpack-project",
459459
"scripts": {
460-
"build": "webpack --mode=production --define-process-env-node-env=production",
460+
"build": "webpack --mode=production --node-env=production",
461461
"build:dev": "webpack --mode=development",
462-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
462+
"build:prod": "webpack --mode=production --node-env=production",
463463
"serve": "webpack serve",
464464
"watch": "webpack --watch",
465465
},
@@ -485,9 +485,9 @@ exports[`init command should generate react template with --force 1`] = `
485485
},
486486
"name": "my-webpack-project",
487487
"scripts": {
488-
"build": "webpack --mode=production --define-process-env-node-env=production",
488+
"build": "webpack --mode=production --node-env=production",
489489
"build:dev": "webpack --mode=development",
490-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
490+
"build:prod": "webpack --mode=production --node-env=production",
491491
"serve": "webpack serve",
492492
"watch": "webpack --watch",
493493
},
@@ -574,9 +574,9 @@ exports[`init command should generate react template with prompt answers 1`] = `
574574
},
575575
"name": "my-webpack-project",
576576
"scripts": {
577-
"build": "webpack --mode=production --define-process-env-node-env=production",
577+
"build": "webpack --mode=production --node-env=production",
578578
"build:dev": "webpack --mode=development",
579-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
579+
"build:prod": "webpack --mode=production --node-env=production",
580580
"serve": "webpack serve",
581581
"watch": "webpack --watch",
582582
},
@@ -647,9 +647,9 @@ exports[`init command should generate typescript project correctly 1`] = `
647647
},
648648
"name": "my-webpack-project",
649649
"scripts": {
650-
"build": "webpack --mode=production --define-process-env-node-env=production",
650+
"build": "webpack --mode=production --node-env=production",
651651
"build:dev": "webpack --mode=development",
652-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
652+
"build:prod": "webpack --mode=production --node-env=production",
653653
"watch": "webpack --watch",
654654
},
655655
"version": "1.0.0",
@@ -717,9 +717,9 @@ exports[`init command should use less in project when selected 1`] = `
717717
},
718718
"name": "my-webpack-project",
719719
"scripts": {
720-
"build": "webpack --mode=production --define-process-env-node-env=production",
720+
"build": "webpack --mode=production --node-env=production",
721721
"build:dev": "webpack --mode=development",
722-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
722+
"build:prod": "webpack --mode=production --node-env=production",
723723
"watch": "webpack --watch",
724724
},
725725
"version": "1.0.0",
@@ -785,9 +785,9 @@ exports[`init command should use mini-css-extract-plugin when selected 1`] = `
785785
},
786786
"name": "my-webpack-project",
787787
"scripts": {
788-
"build": "webpack --mode=production --define-process-env-node-env=production",
788+
"build": "webpack --mode=production --node-env=production",
789789
"build:dev": "webpack --mode=development",
790-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
790+
"build:prod": "webpack --mode=production --node-env=production",
791791
"watch": "webpack --watch",
792792
},
793793
"version": "1.0.0",
@@ -854,9 +854,9 @@ exports[`init command should use postcss in project when selected 1`] = `
854854
},
855855
"name": "my-webpack-project",
856856
"scripts": {
857-
"build": "webpack --mode=production --define-process-env-node-env=production",
857+
"build": "webpack --mode=production --node-env=production",
858858
"build:dev": "webpack --mode=development",
859-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
859+
"build:prod": "webpack --mode=production --node-env=production",
860860
"watch": "webpack --watch",
861861
},
862862
"version": "1.0.0",
@@ -925,9 +925,9 @@ exports[`init command should use sass and css with postcss in project when selec
925925
},
926926
"name": "my-webpack-project",
927927
"scripts": {
928-
"build": "webpack --mode=production --define-process-env-node-env=production",
928+
"build": "webpack --mode=production --node-env=production",
929929
"build:dev": "webpack --mode=development",
930-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
930+
"build:prod": "webpack --mode=production --node-env=production",
931931
"watch": "webpack --watch",
932932
},
933933
"version": "1.0.0",
@@ -997,9 +997,9 @@ exports[`init command should use sass in project when selected 1`] = `
997997
},
998998
"name": "my-webpack-project",
999999
"scripts": {
1000-
"build": "webpack --mode=production --define-process-env-node-env=production",
1000+
"build": "webpack --mode=production --node-env=production",
10011001
"build:dev": "webpack --mode=development",
1002-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
1002+
"build:prod": "webpack --mode=production --node-env=production",
10031003
"watch": "webpack --watch",
10041004
},
10051005
"version": "1.0.0",
@@ -1068,9 +1068,9 @@ exports[`init command should use sass with postcss in project when selected 1`]
10681068
},
10691069
"name": "my-webpack-project",
10701070
"scripts": {
1071-
"build": "webpack --mode=production --define-process-env-node-env=production",
1071+
"build": "webpack --mode=production --node-env=production",
10721072
"build:dev": "webpack --mode=development",
1073-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
1073+
"build:prod": "webpack --mode=production --node-env=production",
10741074
"watch": "webpack --watch",
10751075
},
10761076
"version": "1.0.0",
@@ -1136,9 +1136,9 @@ exports[`init command should use stylus in project when selected 1`] = `
11361136
},
11371137
"name": "my-webpack-project",
11381138
"scripts": {
1139-
"build": "webpack --mode=production --define-process-env-node-env=production",
1139+
"build": "webpack --mode=production --node-env=production",
11401140
"build:dev": "webpack --mode=development",
1141-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
1141+
"build:prod": "webpack --mode=production --node-env=production",
11421142
"watch": "webpack --watch",
11431143
},
11441144
"version": "1.0.0",
@@ -1203,9 +1203,9 @@ exports[`init command should work with 'c' alias 1`] = `
12031203
},
12041204
"name": "my-webpack-project",
12051205
"scripts": {
1206-
"build": "webpack --mode=production --define-process-env-node-env=production",
1206+
"build": "webpack --mode=production --node-env=production",
12071207
"build:dev": "webpack --mode=development",
1208-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
1208+
"build:prod": "webpack --mode=production --node-env=production",
12091209
"serve": "webpack serve",
12101210
"watch": "webpack --watch",
12111211
},
@@ -1225,9 +1225,9 @@ exports[`init command should work with 'create' alias 1`] = `
12251225
},
12261226
"name": "my-webpack-project",
12271227
"scripts": {
1228-
"build": "webpack --mode=production --define-process-env-node-env=production",
1228+
"build": "webpack --mode=production --node-env=production",
12291229
"build:dev": "webpack --mode=development",
1230-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
1230+
"build:prod": "webpack --mode=production --node-env=production",
12311231
"serve": "webpack serve",
12321232
"watch": "webpack --watch",
12331233
},
@@ -1247,9 +1247,9 @@ exports[`init command should work with 'n' alias 1`] = `
12471247
},
12481248
"name": "my-webpack-project",
12491249
"scripts": {
1250-
"build": "webpack --mode=production --define-process-env-node-env=production",
1250+
"build": "webpack --mode=production --node-env=production",
12511251
"build:dev": "webpack --mode=development",
1252-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
1252+
"build:prod": "webpack --mode=production --node-env=production",
12531253
"serve": "webpack serve",
12541254
"watch": "webpack --watch",
12551255
},
@@ -1269,9 +1269,9 @@ exports[`init command should work with 'new' alias 1`] = `
12691269
},
12701270
"name": "my-webpack-project",
12711271
"scripts": {
1272-
"build": "webpack --mode=production --define-process-env-node-env=production",
1272+
"build": "webpack --mode=production --node-env=production",
12731273
"build:dev": "webpack --mode=development",
1274-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
1274+
"build:prod": "webpack --mode=production --node-env=production",
12751275
"serve": "webpack serve",
12761276
"watch": "webpack --watch",
12771277
},
@@ -1288,9 +1288,9 @@ exports[`init command uses yarn as the package manager when opted 1`] = `
12881288
},
12891289
"name": "my-webpack-project",
12901290
"scripts": {
1291-
"build": "webpack --mode=production --define-process-env-node-env=production",
1291+
"build": "webpack --mode=production --node-env=production",
12921292
"build:dev": "webpack --mode=development",
1293-
"build:prod": "webpack --mode=production --define-process-env-node-env=production",
1293+
"build:prod": "webpack --mode=production --node-env=production",
12941294
"watch": "webpack --watch",
12951295
},
12961296
"version": "1.0.0",

0 commit comments

Comments
 (0)
Please sign in to comment.