Подтвердить что ты не робот

Как улучшить производительность webpack?

Недавно я переключился с браузера на webpack, и время сборки подскочило с 4 до 16 секунд (2014 MBP). Я понимаю, что webpack делает гораздо больше, чем браузер, но я не должен так долго. Мой процесс сборки довольно прост. Есть ли какие-либо советы или варианты улучшения моего времени сборки?

var webpackOptions = {
  cache : true,
  output: {
    filename: '[name].js',
  },
  module: {
    loaders: [
      { test: /\.js$/, loader: 'jsx-loader' },
      { test: /\.css$/, loader: "style!css" }
    ]
  },
};


gulp.task('buildJs', function(){ 
    multipipe(
      gulp.src(jsSrcPath),
      named(),
      webpack(webpackOptions),
      uglify(),
      gulp.dest(jsDestPath)
    ).on('error', function(error){
      console.log(error)
    });
});
4b9b3361

Ответ 1

Вы должны установить пути include для ваших загрузчиков. Пример:

{ test: /\.js$/, loader: 'jsx-loader', include: jsSrcPath }

Подумайте о том же для этого случая css.

По моему опыту, это может привести к огромным выигрышам, поскольку ему больше не нужно проходить через node_modules. В качестве альтернативы вы могли бы exclude node_modules, но я нахожу, что это просто, чтобы настроить это include. Это становится более сложным, если вы требуете контент из пути включения.

Документы для включения/исключения

Ответ 2

Вы можете использовать параметр noParse для больших файлов, таких как jquery и angular.

Примеры здесь: https://github.com/jeffling/angular-webpack-example/blob/b2b59dff60c35ee6d70170948ab15bba8af5e613/template/webpack.config.coffee#L60

Кроме того, если вы установите для параметра cache значение true, при просмотре его перестраивает намного быстрее.

Еще один способ увеличения скорости - установить большие зависимости, которые вы не собираетесь редактировать в отдельный пакет.

Ответ 3

Недавно новый загрузчик модулей HappyPack (не написанный мной) сильно использует распараллеливание и кеширование дисков для улучшения времени сборки на больших кодовых базах довольно значительно. Время компиляции на моей базе кода прошло от 40 секунд до 10. Это все еще довольно новая библиотека, поэтому она не очень хорошо документирована или удобна для пользователя. Стоит взглянуть, хотя.