由于js的单线程特性,文件和任务时 要等待一个任务执行完成后执行下一个任务,但在实际开发中,很多任务是可以并行执行的(如同时处理多个不同js文件或同事压缩多张图片),一些loader和插件(thread-loader或happypack)提供了额外的并行处理能力
并行前
 
并行后
 
webpack.config.js
module.exports = {entry: './src/index.js',output: {filename: 'main.js',},// mode: 'production', // 或者 'production'module: {rules: [{test: /\.js$/i,exclude: /node_modules/,use: [{  loader: 'thread-loader',  options: {  // 工作者数量,默认为 os.cpus().length - 1  // 当设置为`true`时,它会自动匹配主机上的CPU核心数  workers: 4, // 或者 true  // 持久化worker,防止重新生成  //   persistent: true,  // 传递给工作线程的loader上下文  // (默认: 传递给主线程的相同上下文)  // pool: {}  // 允许跨进程共享相同的node_modules  // 将极大地提升编译速度  // 默认为`true`  // 注意:启用此选项将禁用`pool.name`和`pool.path`  //   pool: {  //     type: 'shared',  //   },  // 当使用持久化工作线程时,设置超时时间(毫秒)  // 在空闲时杀死工作线程  // 默认为5000(5秒)  //   timeout: 2000,  // 传递给工作线程的额外选项  // (默认: 传递给主线程的相同选项)  // options: {},  },  },  {  loader: 'babel-loader', // 需要并行处理的loader  // ... 其他babel-loader配置  }, ]}]},
}