运行在Node.js上的Webpack是单线程模型,所以Webpack需要处理的事情需要一件一件的去做,不能一起做。
我们需要Webpack同时处理多个任务,充分发挥多核CPU电脑的威力。HappyPack可以让Webpack做到这一点。它将任务分解为多个子流程并发执行,子流程处理完毕后将结果发送给主流程。
因为JavaScript是单线程模型,多核CPU的能力只能通过多进程来实现,而不能通过多线程来实现。
提示:HappyPack对文件加载器和url加载器不友好,所以不建议使用这个加载器。
安装HappyPack
新产品导入的运行机制
使用快乐包
修改您的webpack.config.js文件
const Happypack=require(' Happypack ');const OS=require(' OS ');const happyThreadPool=HappyPack。thread pool({ size: OS . CPU()。长度});模块。导出={ module : { rule s 3360 [{ test 3360/。js $/,//给出的文件处理。js到id为happyBabel的happyback实例执行loader : ' happyback/loader?Id=happyBabel ',//排除node_modules目录中的文件exclude:/node_modules/}。]},plugins :[new happypack({//ID标识类文件ID :' HappyBabel '在happy pack处理的地方,//如何处理加载器:[{ loader : ' Babel-loader?缓存目录=true ',}],//共享进程池threadpool: happy threadpool,//允许HappyPack输出日志verbose: true,}) ]}在Loader配置中,所有文件都由happypack/loader处理,querystring?Id=babel告诉HappyPack/loader选择哪个HappyPack实例来处理文件。在插件配置中,增加了两个新的HappyPack实例,告诉happypack/loader如何处理。js和。css文件。选项中id属性的值和?Id=babel,选项中的Loaders属性与loader配置中的属性相同。HappyPack参数
Id: String使用唯一标识符Id来表示当前的HappyPack用于处理特定类型的文件。loaders: Array的用法与webpack Loader配置中的用法相同。threads: Number表示打开多少个子进程来处理这种类型的文件,默认值为3,类型必须是整数。Verbose :布尔值是否允许HappyPack输出日志默认为真。ThreadPool: HappyThreadPool代表共享进程池,即多个HappyPack实例使用同一个共享进程池中的子进程来处理任务,以防止过度占用资源。Verbosehenprofiling : boolean打开webpack - profile,仍然希望HappyPack产生输出。Debug:布尔值为故障排除启用调试。默认值为false。摘要
如果你想详细了解happypack的原理,可以阅读这篇文章,happypack原理分析
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。