如何消除dead webpack requires/imports?
How to eliminate dead webpack requires/imports?
我想使用 Webpack (v2.5.1) 和 UglifyJsPlugin 根据环境 (development/production) 删除某些文件 require/imports。
现状
export const IMAGES = Object.assign(
{
PROFILE: require('images/profile.png'),
// ...
},
process.env.NODE_ENV !== 'production' && {'LOGO': require('images/logo.png')}
);
到目前为止,我了解到在生产构建后输出的 Javascript 文件不包含 IMAGES.LOGO
密钥,但输出中存在所需的 images/logo.png
文件。
我有一种预感,即 Webpack 在 Uglify 之前解析文件并在之后保留它们,尽管在消除死代码后它们不再在任何地方使用。
有办法实现吗?
Webpack插件配置
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
}),
new webpack.optimize.UglifyJsPlugin({
comments: false,
sourceMap: true
})
通过发布到 Webpack GitHub repo,了解到死代码消除在这个例子中不起作用。如果我用 if
子句更直接地重写它,它会起作用,如下所示:
export const IMAGES = {
PROFILE: require('images/profile.png'),
// ...
};
if (process.env.NODE_ENV !== 'production') {
IMAGES.LOGO = require('images/logo.png');
}
我想使用 Webpack (v2.5.1) 和 UglifyJsPlugin 根据环境 (development/production) 删除某些文件 require/imports。
现状
export const IMAGES = Object.assign(
{
PROFILE: require('images/profile.png'),
// ...
},
process.env.NODE_ENV !== 'production' && {'LOGO': require('images/logo.png')}
);
到目前为止,我了解到在生产构建后输出的 Javascript 文件不包含 IMAGES.LOGO
密钥,但输出中存在所需的 images/logo.png
文件。
我有一种预感,即 Webpack 在 Uglify 之前解析文件并在之后保留它们,尽管在消除死代码后它们不再在任何地方使用。
有办法实现吗?
Webpack插件配置
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
}),
new webpack.optimize.UglifyJsPlugin({
comments: false,
sourceMap: true
})
通过发布到 Webpack GitHub repo,了解到死代码消除在这个例子中不起作用。如果我用 if
子句更直接地重写它,它会起作用,如下所示:
export const IMAGES = {
PROFILE: require('images/profile.png'),
// ...
};
if (process.env.NODE_ENV !== 'production') {
IMAGES.LOGO = require('images/logo.png');
}