Как устранить мертвые требования/импорт веб-пакета?

Я хочу удалить определенные файлы, требуемые/импортируемые в зависимости от среды (разработка/производство), используя Webpack (v2.5.1) и UglifyJsPlugin.

Текущая ситуация

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
})

person Renārs Vilnis    schedule 09.05.2017    source источник


Ответы (1)


По проблеме с репозиторием Webpack GitHub понял, что устранение мертвого кода в этом примере не работает. Это сработает, если я перепишу его более просто с предложением if следующим образом:

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

if (process.env.NODE_ENV !== 'production') {
 IMAGES.LOGO = require('images/logo.png');
}
person Renārs Vilnis    schedule 28.09.2017