Используя ваш пример, я бы предпочел что-то вроде этого:
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),
new webpack.LoaderOptionsPlugin({
debug: true
}),
new CopyWebpackPlugin([
{from: 'src/www/'}
])
NODE_ENV === 'production' && new BundleAnalyzerPlugin(),
NODE_ENV === 'production' && new CompressionPlugin({
algorithm: 'gzip',
test: /\.js$|\.css$|\.html$/
}),
NODE_ENV === 'production' && new UglifyJsPlugin({
test: /\.js(\?.*)?$/i
})
].filter(n => n)
или, если вы предпочитаете ES5:
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),
new webpack.LoaderOptionsPlugin({
debug: true
}),
new CopyWebpackPlugin([
{from: 'src/www/'}
])
NODE_ENV === 'production' && new BundleAnalyzerPlugin(),
NODE_ENV === 'production' && new CompressionPlugin({
algorithm: 'gzip',
test: /\.js$|\.css$|\.html$/
}),
NODE_ENV === 'production' && new UglifyJsPlugin({
test: /\.js(\?.*)?$/i
})
].filter(function (plugin) { return plugin; })
Что делает этот фрагмент, так это добавление условного (NODE_ENV === 'production'
) к массиву, который просто говорит компилятору JS записать false
или правый код в массив. Функция filter
, с другой стороны, только говорит, отфильтровывает вещи, которые false
или false-ish.
Давайте предположим, что мы находимся на NODE_ENV = 'development'
, наши плагины будут выглядеть так:
[HotModuleReplacementPlugin, NamedModulesPlugin, LoaderOptionsPlugin, CopyWebpackPlugin, false, false, false].filter(...)
после того, как фильтр заработал, у нас есть это:
[HotModuleReplacementPlugin, NamedModulesPlugin, LoaderOptionsPlugin, CopyWebpackPlugin]
Если мы теперь предположим, что мы находимся на NODE_ENV = 'production'
, наши плагины будут выглядеть так:
[HotModuleReplacementPlugin, NamedModulesPlugin, LoaderOptionsPlugin, CopyWebpackPlugin, BundleAnalyzerPlugin, CompressionPlugin, UglifyJsPlugin].filter(...)
после того, как фильтр заработал, у нас есть это:
[HotModuleReplacementPlugin, NamedModulesPlugin, LoaderOptionsPlugin, CopyWebpackPlugin, BundleAnalyzerPlugin, CompressionPlugin, UglifyJsPlugin]