Skip to content

Commit ffb7f20

Browse files
committed
feature #960 fix: don't override process variable in DefinePlugin configuration (drazik)
This PR was squashed before being merged into the main branch. Discussion ---------- fix: don't override process variable in DefinePlugin configuration Following the warning on https://webpack.js.org/plugins/define-plugin/: > When defining values for process prefer > `'process.env.NODE_ENV': JSON.stringify('production')` over > `process: { env: { NODE_ENV: JSON.stringify('production') } }`. > Using the latter will overwrite the process object which can break > compatibility with some modules that expect other values on the > process object to be defined. This fixed a conflict warning I had when using [`dotenv-webpack` plugin](https://github.com/mrsteele/dotenv-webpack): ``` DefinePlugin Conflicting values for 'process.env' ``` Commits ------- fbe9393 fix: don't override process variable in DefinePlugin configuration
2 parents a15c714 + fbe9393 commit ffb7f20

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

lib/plugins/define.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ const applyOptionsCallback = require('../utils/apply-options-callback');
2121
*/
2222
module.exports = function(plugins, webpackConfig) {
2323
const definePluginOptions = {
24-
'process.env': {
25-
NODE_ENV: webpackConfig.isProduction() ? '"production"' : '"development"'
26-
}
24+
'process.env.NODE_ENV': webpackConfig.isProduction()
25+
? '"production"'
26+
: '"development"',
2727
};
2828

2929
plugins.push({

test/config-generator.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ describe('The config-generator function', () => {
273273
const actualConfig = configGenerator(config);
274274

275275
const definePlugin = findPlugin(webpack.DefinePlugin, actualConfig.plugins);
276-
expect(definePlugin.definitions['process.env'].NODE_ENV).to.equal('"development"');
276+
expect(definePlugin.definitions['process.env.NODE_ENV']).to.equal('"development"');
277277

278278
expect(actualConfig.optimization.minimizer).to.be.undefined;
279279
});
@@ -289,7 +289,7 @@ describe('The config-generator function', () => {
289289
const actualConfig = configGenerator(config);
290290

291291
const definePlugin = findPlugin(webpack.DefinePlugin, actualConfig.plugins);
292-
expect(definePlugin.definitions['process.env'].NODE_ENV).to.equal('"production"');
292+
expect(definePlugin.definitions['process.env.NODE_ENV']).to.equal('"production"');
293293

294294
expect(actualConfig.optimization.minimizer[0]).to.not.be.undefined;
295295
});

test/plugins/define.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe('plugins/define', () => {
3232
definePluginUtil(plugins, config);
3333
expect(plugins.length).to.equal(1);
3434
expect(plugins[0].plugin).to.be.instanceof(webpack.DefinePlugin);
35-
expect(plugins[0].plugin.definitions['process.env'].NODE_ENV).to.equal(JSON.stringify('development'));
35+
expect(plugins[0].plugin.definitions['process.env.NODE_ENV']).to.equal(JSON.stringify('development'));
3636
});
3737

3838
it('production environment with default settings', () => {
@@ -42,7 +42,7 @@ describe('plugins/define', () => {
4242
definePluginUtil(plugins, config);
4343
expect(plugins.length).to.equal(1);
4444
expect(plugins[0].plugin).to.be.instanceof(webpack.DefinePlugin);
45-
expect(plugins[0].plugin.definitions['process.env'].NODE_ENV).to.equal(JSON.stringify('production'));
45+
expect(plugins[0].plugin.definitions['process.env.NODE_ENV']).to.equal(JSON.stringify('production'));
4646
});
4747

4848
it('production environment with options callback', () => {
@@ -51,7 +51,7 @@ describe('plugins/define', () => {
5151

5252
config.configureDefinePlugin((options) => {
5353
options['foo'] = true;
54-
options['process.env'].bar = true;
54+
options['process.env.bar'] = true;
5555
});
5656

5757
definePluginUtil(plugins, config);
@@ -60,10 +60,10 @@ describe('plugins/define', () => {
6060

6161
// Allows to add new definitions
6262
expect(plugins[0].plugin.definitions.foo).to.equal(true);
63-
expect(plugins[0].plugin.definitions['process.env'].bar).to.equal(true);
63+
expect(plugins[0].plugin.definitions['process.env.bar']).to.equal(true);
6464

6565
// Doesn't remove default definitions
66-
expect(plugins[0].plugin.definitions['process.env'].NODE_ENV).to.equal(JSON.stringify('production'));
66+
expect(plugins[0].plugin.definitions['process.env.NODE_ENV']).to.equal(JSON.stringify('production'));
6767
});
6868

6969
it('production environment with options callback that returns an object', () => {

0 commit comments

Comments
 (0)