Переменные времени компиляции в webpack, является ли NODE_ENV особенным? - PullRequest
0 голосов
/ 06 мая 2020

Я использую webpack 4.41.6.

Если у меня есть это в одном из моих JS файлов:

const var1 = process.env.NODE_ENV === 'development' ? 'foo' : 'bar';
const var2 = process.env.SOME_VAR === 'something' ? 'moo' : 'cow';

console.log(var1, var2);

Затем запустите SOME_VAR=something NODE_ENV=production webpack, я получаю:

a="something"===e.env.SOME_VAR?"moo":"cow";console.log("bar",a);

Что особенного в NODE_ENV? Как я могу получить такую ​​же оптимизацию времени компиляции с помощью SOME_VAR?

Спасибо за любую помощь с этим.

1 Ответ

1 голос
/ 13 мая 2020

Мне помогли gitter webpack; они указали мне в направлении DefinePlugin и Mode .

Оказывается, NODE_ENV является особенным, это вызывает что-то вроде этого будет сгенерировано:

new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV) })

Я пропустил это, потому что у меня не было DefinePlugin в моей конфигурации веб-пакета или зависимостях узлов; очевидно, он встроен?

Я добавил это в свою конфигурацию веб-пакета, и теперь он работает так, как я надеялся:

plugins.push(
  new webpack.DefinePlugin({
    'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
    'process.env.SOME_VAR': JSON.stringify(process.env.SOME_VAR)
  })
);
...