webpack打包优化_webpack打包及部署

webpack打包优化_webpack打包及部署2019独角兽企业重金招聘Python工程师标准>>>…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

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

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

安装 HappyPack

npm i -D happypack

使用 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 配置中一样。

对应的参数

  • 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://my.oschina.net/u/988463/blog/3001195

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179586.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • matlab 累加合,matlab循环语句for累加[通俗易懂]

    matlab 累加合,matlab循环语句for累加[通俗易懂]Matlabfor循环语句没仔细研究你那个拟合函数的用法。不过像这种需要分段处理数据的情况很多,有种在matlab里很常用的技巧感觉你可以学学:假设原始数据(xdata)是一列100个数,你需要一次处理13个,那么下面这段代码先将这100数“折叠”成一个13行的矩阵(x)。我这个例子里是折叠成13*8的矩阵了。因为100不能整除13,所以会在最后补零。如果你…

  • C++ Vector Resize函数[通俗易懂]

    C++VectorResize函数ChangesizeResizesthecontainersothatitcontainsnelements.Ifnissmallerthanthecurrentcontainersize,thecontentisreducedtoitsfirstnelements,removingthosebeyond(anddestroyingthem).Ifnisgreaterthanthecu

  • 虚拟机连不上网怎么办

    虚拟机连不上网怎么办 打开 控制面板\网络和Internet\网络和共享中心,单击更改适配器设置 2 右击本地连接,点击共享,勾选允许其他网络用户通过此计算机的Internet连接来连接(N)  文本框下选择 VMwareNetworkAdapterVMnet8 即VMwareNAT连接模式的网卡 3 右击VMwareNetworkAdapter…

  • Eclipse SVN插件的帐号、password改动

    Eclipse SVN插件的帐号、password改动

  • 单片机应用基础知识_51单片机基础知识总结

    单片机应用基础知识_51单片机基础知识总结单片机——硬件基础知识宗旨:技术的学习是有限的,分享的精神是无限的。1、单片机内部资源STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源(1)Flash(硬盘)——程序存储空间——擦写10万次,断电数据不丢失,读写速度慢(2)RAM(内存)——数据存储空间——断电数据丢失

  • jlink接口定义接stm32_图解STM32 JLink 采用JTAG 模式和 SWD模式下载时引脚说明「建议收藏」

    jlink接口定义接stm32_图解STM32 JLink 采用JTAG 模式和 SWD模式下载时引脚说明「建议收藏」因为项目开发需要,采用SWD模式下载STM32,以前都是用JLINKv8的JTAG模式,而且从未认真识别过JLINKv8各引脚。只知道SWD模式下和JTAG模式下共用两个引脚而已。只有明确了v8的各引脚定义才可以自己用杜邦线取其中的几个引脚作SWD模式的下载!!!实际测试,当JATG正面拿在手里时,即缺口在上方。1、2引脚代表VDD。4、6、8、10、12、14、16、18、20引脚都为VSS。…

发表回复

您的电子邮箱地址不会被公开。

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