webpack启动后会从配置的Entry出发,解析出文件中的导入语句,再递归的解析。在遇到导入语句时,webpack会做两件事情:

  • 根据导入语句去寻找对应的要导入的文件。
  • 根据找到的要导入文件的后缀,使用配置中的loader去处理文件。

以上两件事情虽然对于处理一个文件非常快,但是当项目大了以后文件量会变的非常多,这时候构建速度会很慢。所以我们要去优化相关配置。

优化loader配置

由于loader对文件的转换操作很耗时,需要让尽可能少的文件被loader处理。可以通过include去命中只有哪些文件被处理。也可以通过exclude去排除哪些文件不被处理。

举个栗子

  1. module.exports = {
  2. module: {
  3. rules: [
  4. {
  5. // 如果项目源码中只有 js 文件就不要写成 /\.jsx?$/,提升正则表达式性能
  6. test: /\.js$/,
  7. // babel-loader 支持缓存转换出的结果,通过 cacheDirectory 选项开启
  8. use: ['babel-loader?cacheDirectory'],
  9. // 只对项目根目录下的 src 目录中的文件采用 babel-loader
  10. + include: path.resolve(__dirname, 'src'),
  11. // 排除node_modules下的文件
  12. + exclude: /node_modules/
  13. },
  14. ]
  15. },
  16. };