如何提高 webpack 性能?

IT技术 javascript gulp reactjs browserify webpack
2021-05-19 11:54:33

我最近从 browserify 切换到 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)
    });
});
3个回答

您应该include为加载程序设置路径。例子:

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

考虑对那个 css 案例做同样的事情。

根据我的经验,这可以带来巨大的收益,因为它不再需要遍历node_modules或者你也可以,exclude node_modules但我发现设置它更简洁include但是,如果您需要包含路径之外的内容,它会变得更加复杂。

包含/排除文档

您可以将该noParse选项用于大文件,例如 jquery 和 angular。

这里的例子:https : //github.com/jeffling/angular-webpack-example/blob/b2b59dff60c35ee6d70170948ab15bba8af5e613/template/webpack.config.coffee#L60

此外,如果您设置cache为 true,则在观看时它会更快地重建

另一种提高速度的技术是将您不打算编辑的大依赖项放入单独的包中。

最近一个新的module加载器,HappyPack(不是我写的),大量使用并行化和磁盘缓存来显着改善大型代码库的构建时间。我的代码库的编译时间从 40 秒缩短到 10 秒。不过它仍然是一个相当新的库,所以它的文档记录和用户友好度都不是很高。不过值得一看。