webpack优化之HappyPack实战

webpack优化之HappyPack实战由于运行在 Node js 之上的 Webpack 是单线程模型的 所以 Webpack 需要处理的事情需要一件一件的做 不能多件事一起做 我们需要 Webpack 能同一时间处理多个任务 发挥多核 CPU 电脑的威力 HappyPack 就能让 Webpack 做到这点 它把任务分解给多个子进程去并发的执行 子进程处理完后再把结果发送给主进程 由于 JavaScript 是单线程模型 要想发

由于 JavaScript 是单线程模型,要想发挥多核 CPU 的能力,只能通过多进程去实现,而无法通过多线程实现。

提示:由于HappyPack 对file-loader、url-loader 支持的不友好,所以不建议对该loader使用。

安装 HappyPack

npm i -D happypack 

运行机制

webpack优化之HappyPack实战

HappyPack_Workflow.png


使用 HappyPack

修改你的webpack.config.js 文件

const HappyPack = require('happypack'); const os = require('os'); const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length }); module.exports = { module: { rules: [ { test: /\.js$/, //把对.js 的文件处理交给id为happyBabel 的HappyPack 的实例执行 loader: 'happypack/loader?id=happyBabel', //排除node_modules 目录下的文件 exclude: /node_modules/ }, ] }, plugins: [ new HappyPack({ //用id来标识 happypack处理那里类文件 id: 'happyBabel', //如何处理 用法和loader 的配置一样 loaders: [{ loader: 'babel-loader?cacheDirectory=true', }], //共享进程池 threadPool: happyThreadPool, //允许 HappyPack 输出日志 verbose: true, }) ] } 
  • 在 Loader 配置中,所有文件的处理都交给了 happypack/loader 去处理,使用紧跟其后的 querystring ?id=babel 去告诉 happypack/loader 去选择哪个 HappyPack 实例去处理文件。
  • 在 Plugin 配置中,新增了两个 HappyPack 实例分别用于告诉 happypack/loader 去如何处理 .js 和 .css 文件。选项中的 id 属性的值和上面 querystring 中的 ?id=babel 相对应,选项中的 loaders 属性和 Loader 配置中一样。

HappyPack 参数

  • id: String 用唯一的标识符 id 来代表当前的 HappyPack 是用来处理一类特定的文件.
  • loaders: Array 用法和 webpack Loader 配置中一样.
  • threads: Number 代表开启几个子进程去处理这一类型的文件,默认是3个,类型必须是整数。
  • verbose: Boolean 是否允许 HappyPack 输出日志,默认是 true。
  • threadPool: HappyThreadPool 代表共享进程池,即多个 HappyPack 实例都使用同一个共享进程池中的子进程去处理任务,以防止资源占用过多。
  • verboseWhenProfiling: Boolean 开启webpack --profile ,仍然希望HappyPack产生输出。
  • debug: Boolean 启用debug 用于故障排查。默认 false
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177577.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午7:11
下一篇 2026年3月26日 下午7:11


相关推荐

  • 十款很不错的磁盘碎片整理工具「建议收藏」

    十款很不错的磁盘碎片整理工具「建议收藏」
    说到磁盘整理工具,应该说说磁盘碎片的定义,为什么磁盘碎片会对系统性能造成影响。首先我不是专业的电脑人员,对很专业的理论知识不懂,在这里只可以用很通俗很日常的语言来表达。其实磁盘碎片应该称为文件碎片,是因为文件被分散保存到整个磁盘的不同地方,而不是连续地保存在磁盘连续的簇中形成的。为什么这些碎片多了,会对系统性能造成影响呢?打个比方,你的房间你很久没有整理和清洁了,原本有条不紊的东西变得乱七八糟,你找起东西来自然不方便,耗时间。系统读取硬盘数据也一样,硬盘数据琐碎散落,系统读取起来就

    2022年6月25日
    205
  • 力扣题库4

    力扣题库4这道题目的思路还是挺简单的 不过这道题目有一个细节还是挺麻烦的 就是就是当 n 0 m 0 或 n 1 m 0 分别对应的情况是 里面都没有元素 而第二种 n 可以为 1

    2026年3月17日
    2
  • java算法是什么_什么是java算法

    java算法是什么_什么是java算法什么是java算法算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,java算法就是采用Java语言来实现解决某一问题的清晰指令。算法的特征:输入性:有零个或多个外部量作为算法的输入输出性:算法产生至少一个量作为输出确定性:算法中每条指令清晰,无歧义有穷性:算法中每条指令的执行次数有限,执行每条指令是时间也有限可行性:算法原则上能够精确的运行,而且人们用纸和笔做有限次运算后即可完成程…

    2022年7月9日
    26
  • django-redis_文件缓存和redis缓存的区别

    django-redis_文件缓存和redis缓存的区别前言动态网站的基本权衡是,它们是动态的。每次用户请求页面时,Web服务器都会进行各种计算-从数据库查询到模板呈现再到业务逻辑-以创建站点访问者看到的页面。从处理开销的角度来看,这比标准的文件

    2022年7月29日
    16
  • 2021.5.1idea激活码(最新序列号破解)

    2021.5.1idea激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    58
  • 第六章:单利模式,懒汉式,饿汉式以及静态内部类,双重检查

    第六章:单利模式,懒汉式,饿汉式以及静态内部类,双重检查第六章:单利模式,懒汉式,饿汉式以及静态内部类,双重检查

    2022年4月23日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号