Использование режима и webpack.EnvironmentPlugin избыточно? - PullRequest
0 голосов
/ 04 июля 2018

Пытаюсь понять, что webpack.EnvironmentPlugin делает для меня.

использует mode и webpack.EnvironmentPlugin избыточно?

е

module.exports = merge(webpackCommonConfig, {
  mode: 'development',
  ...
  plugins: [
    new webpack.EnvironmentPlugin({ NODE_ENV: 'development' }),
  ],
  ...
});

TLDR: Краткий ответ только для этого примера: Да, это избыточно.

Длинный ответ: гораздо больше, чем просто сказать, что mode меняет env var для NODE_ENV. В то время как на поверхности это будет выглядеть так, как будто new webpack.EnvironmentPlugin({ NODE_ENV: 'development' }) делает только это, но во время выполнения.

1 Ответ

0 голосов
/ 04 июля 2018

Да только для этого конкретного случая использования!

TL; DR;

--mode development автоматически устанавливает: process.env.NODE_ENV до значения development

--mode production автоматически устанавливает: process.env.NODE_ENV к значению production

Вам не нужно добавлять следующий плагин: new webpack.EnvironmentPlugin({ NODE_ENV: 'development' }),

Это будет установка only , которая будет избыточной , потому что NODE_ENV: 'development|production' будет автоматически установлен при использовании --mode!

Если вы не установите --mode, он автоматически по умолчанию будет production!

Читайте дальше, чтобы понять, почему --mode на самом деле не является избыточным и что он на самом деле делает под капотом:

<Ч />

Что на самом деле происходит, если вы установите --mode на production или development:

Режим: разработка

Устанавливает process.env.NODE_ENV в значение development.

Включает:
NamedChunksPlugin
и NamedModulesPlugin.

Режим: производство

Устанавливает process.env.NODE_ENV в значение production.

Включает:
FlagDependencyUsagePlugin,
FlagIncludedChunksPlugin,
ModuleConcatenationPlugin,
NoEmitOnErrorsPlugin, OccurrenceOrderPlugin,
SideEffectsFlagPlugin
и UglifyJsPlugin.

--mode добавляет различные плагины к процессу компиляции, в зависимости от того, какое значение установлено для mode.

>> Ссылка

Пожалуйста, помните, что настройка NODE_ENV не устанавливает режим автоматически

...