HappyPack

HappyPack的工作原理:在Webpack和Loader之间多加了一层,改成了Webpack并不是直接去和某个Loader进行工作,而是Webpack test到了需要编译的某个类型的资源模块后,将该资源的处理任务交给了HappyPack,由HappyPack在内部线程池中进行任务调度,分配一个线程调用处理该类型资源的Loader来处理这个资源,完成后上报处理结果,最后HappyPack把处理结果返回给Webpack,最后由Webpack输出到目的路径。通过这一系列操作,将原本都在一个Node.js线程内的工作,分配到了不同的线程(进程)中并行处理。
happy pack 原理解析
1、安装HappyPack

npm install happypack --save-dev

2、在webpack.base.conf.js中引入happypack

const HappyPack = require('happypack');
const os = require('os');
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length });

文档:happypack、os.cpus()
3、在webpack.base.conf.js的plugins中新增

new HappyPack({// id标识babel处理那一类文件id: 'babel',// 配置loaderloaders: [{path: 'babel-loader',query: {babelrc: true,cacheDirectory: true}}],// 共享进程池threadPool: happyThreadPool,// 日志输出verbose: true
})

4、修改webpack.base.conf.js中的rules

{test: /\.js$/,loader: 'happypack/loader?id=babel',include: [resolve('src'),resolve('node_modules/webpack-dev-server/client')],exclude: /node_modules/
}

打包显示:

terser-webpack-plugin

文档:terser-webpack-plugin
打包时使用terser-webpack-plugin替换uglifyjs-webpack-plugin实现多线程压缩js代码
1、安装terser-webpack-plugin

npm install terser-webpack-plugin --save-dev

2、在webpack.prod.conf.js中引入

const TerserPlugin = require('terser-webpack-plugin')

3、在webpack.prod.conf.js的optimization中新增

minimizer: [new TerserPlugin({test: /\.js(\?.*)?$/i,parallel: true,extractComments: true,sourceMap: config.build.productionSourceMap,terserOptions: {output: {// 是否输出可读性较强的代码,即会保留空格和制表符,默认为输出,为了达到更好的压缩效果,可以设置为falsebeautify: false,// 是否保留代码中的注释,默认为保留,为了达到更好的压缩效果,可以设置为falsecomments: false},compress: {// 是否在UglifyJS删除没有用到的代码时输出警告信息,默认为输出,可以设置为false关闭这些作用不大的警告warnings: false,// 是否删除代码中所有的console语句,默认为不删除,开启后,会删除所有的console语句drop_console: true,drop_debugger: true,// 是否内嵌虽然已经定义了,但是只用到一次的变量,比如将 var x = 1; y = x, 转换成 y = 5, 默认为不转换,为了达到更好的压缩效果,可以设置为falsecollapse_vars: true,// 是否提取出现了多次但是没有定义成变量去引用的静态值,比如将 x = 'xxx'; y = 'xxx'  转换成var a = 'xxxx'; x = a; y = a; 默认为不转换,为了达到更好的压缩效果,可以设置为falsereduce_vars: true,pure_funcs: ['console.log'] // 移除console}}}),]

使用 happypack 和 terser-webpack-plugin 优化 Webpack 项目构建速度相关推荐

  1. 使用 happypack 提升 Webpack 项目构建速度

    本文简单介绍了 Happypack 的简单使用,不了解的同学可以进来看一看.也许会有所帮助. Happypack 作用 在使用 Webpack 对项目进行构建时,会对大量文件进行解析和处理.当文件数量 ...

  2. happypack提升项目构建速度

    happypack提升项目构建速度 前言 最近在看<深入浅出webpack>看到了happypack.就想起公司一vue项目,每次项目启动都将近2分钟.等的实在让人不耐烦,都够我支付宝偷一 ...

  3. webpack打包优化(webpack打包优化 文件大小)

    webpack 打包怎么优化的 解决webpack打包的文件体积过大的问题: 确实,每次打包从入口开始,会parse所有的依赖,多的时候竟然打包一次要2秒多,简直不能忍.然而,有几个解决方案,最有效的 ...

  4. 使用webpack.require优化vue项目的路由

    之前做一个后台系统的时候,前期路由也就十多个,就是使用的文档中的那种写法: import Vue from 'vue'; const Login = () => import('@/compon ...

  5. webpack打包优化_Webpack 构建速度优化

    如何输出Webpack构建分析 输出Webpack构建信息的 .json文件: webpack --profile --json > starts.json 说明: --profile:记录构建 ...

  6. webpack打包优化_提速MAX 京东通天塔WEBPACK构建发布优化实践

    通天塔作为运营.商家搭建营销活动页的主力系统,数年来一直致力于提供用户更丰富.更强大的搭建体验.通天塔可视化CMS(简称可视化)作为直面商家运营搭建的第一层,在系统能力越来越强大的同时,自身的代码量. ...

  7. 服务器webpack构建性能,[译] 优化 WEBPACK 以更快地构建 REACT

    如果您的 Webpack 构建缓慢且有大量的库 -- 别担心,有一种方法可以提高增量构建的速度!Webpack 的 DLLPlugin 允许您将所有的依赖项构建到一个文件中.这是一个取代分块的很好选择 ...

  8. 【Webpack 性能优化系列(1) - HMR 热模块替换】

    webpack系列文章: [Webpack 性能优化系列(9) - 多进程打包]极大的提升项目打包构建速度!!! [Webpack 性能优化系列(8) - PWA]使用渐进式网络应用程序为我们的项目添 ...

  9. 优酷 Android 构建速度优化实践

    作者:苏彦郊(木磊) Android 项目一般使用 gradle 作为构建打包工具,gradle 简洁.动态的功能特性为人津津乐道,同样,构建执行速度缓慢的缺陷也一直为人诟病. 近年来,随着优酷功能特 ...

最新文章

  1. 那位五十多岁的创业者给我的启示!
  2. c js html页面进度条,js实现进度条的方法
  3. C#中子类与父类的相互转换
  4. php $s=#039;kkk#039; if($s==0),之前收集到的PHP总结笔记
  5. jvm系列(八):jvm知识点总览-高级Java工程师面试必备
  6. 开发必看 | iOS开发常用设计模式!
  7. 恢复二叉搜索树Python解法
  8. 笔记本 win11 64位专业版iso文件v2021.07
  9. Mr.J-- jQuery学习笔记(二十一)--模拟微博页面
  10. C加载JVM崩溃,一般是因为某个变量为NULL
  11. gets函数没有输入会怎样_如果没有“227事件”,肖战的未来会是怎样的?
  12. OSChina 娱乐弹弹弹——周一至周五,汗滴禾下土
  13. keep-alive的用法
  14. 服务器进pe后找不到硬盘,进入PE后找不到硬盘的原因及解决方法
  15. 二氧化铅,氧化锌,四氧化三铁-碳复合材料增容电池的方法
  16. 神经网络和pid有什么区别,基于神经网络的pid控制
  17. 2021山西高考口试成绩查询,2021年山西高考成绩电话手机查询方法入口 附成绩打印教程...
  18. Android 卡顿优化 3 布局优化 工具 Hierarchy Viewer
  19. html语言制作简单计算器,HTML自制计算器
  20. 天籁之声---世界上最动听的歌

热门文章

  1. 【小数化成分数方法+最大公约数化简分数】HDU-1717 小数化分数2
  2. 【数学建模】2012年全国大学生数学建模-葡萄酒的评价问题全面解析(附R语言实现部分代码)
  3. 教师资格证考试时间安排已经公布了,赶紧开始准备吧
  4. 如何读取电脑本地或服务器上的图片
  5. dubbo源码学习(二) : spring 自定义标签
  6. SQL 基础(一)创建、查看、修改、删除数据库
  7. sqlserver语句创建表
  8. UI设计中的标签设计规范
  9. linux cp 覆盖确认,cp在复制文件的时候被提示确认覆盖
  10. python hmac_Python之hmac模块的使用