如何消除死webpack需要/进口?

时间:2017-05-09 11:30:21

标签: webpack webpack-2 dead-code

我想使用Webpack(v2.5.1)和UglifyJsPlugin删除某些文件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
})

1 个答案:

答案 0 :(得分:0)

通过Webpack GitHub repo的问题,理解死代码消除在这个例子中不起作用。如果我使用if子句更直接地重写它,它可以工作,如下所示:

export const IMAGES = {
  PROFILE: require('images/profile.png'),
  // ...
};

if (process.env.NODE_ENV !== 'production') {
 IMAGES.LOGO = require('images/logo.png');
}