webpack4 js构建速度优化

栏目: 编程语言 · 发布时间: 5年前

内容简介:首先第一个主角 babel-loader,给babel-loader 加一个参数即可cacheDirectory: true。相关的配置还有 cacheIdentifier 和 cacheCompression,cacheIdentifier 是给 cache 配一个标识,cacheCompression 是babel-loader 默认会以 gzip 去压缩,如果你的文件量非常大可以尝试设为 false。什么,光有 cahche 还是不够快吗,谁让你一次要改那么多文件。cache 只能在第一次构建之后起作

请注意:本文主要是针对 webpack4 的 js 构建速度做优化。

用一句话总结本文,就是给 js 构建流程加 cache。

babel-loader

首先第一个主角 babel-loader,给babel-loader 加一个参数即可cacheDirectory: true。相关的配置还有 cacheIdentifier 和 cacheCompression,cacheIdentifier 是给 cache 配一个标识,cacheCompression 是babel-loader 默认会以 gzip 去压缩,如果你的文件量非常大可以尝试设为 false。

thread-loader

什么,光有 cahche 还是不够快吗,谁让你一次要改那么多文件。cache 只能在第一次构建之后起作用,而且第一次构建本身也依旧是耗时的事情。那么我们请出第二个主角 thread-loader,这货看名字就知道是干嘛的吧。简单说就是让你的多核 cpu 按一定配置来参与到打包流程中。加进来之后 js rule 的配置就变成以下

rules: [
  {
    test: /\.js$/,
    include: /(src)/,
    use: [
      {
        loader: 'thread-loader',
        options: {
          workers: os.cpus().length
        }
      },
      {
        loader: 'babel-loader',
        options: {
          cacheDirectory: true,
          presets: [['es2015', { modules: false }], 'stage-0', 'react']
        }
      }
    ]
  },

workers 的数量就是参与编译的 cpu 核心数量。thread-loader 的参数大致可以分为 workers 和 pool 两类:

  • workerParallelJobs 一个 worker 进程中并行执行工作的数量,默认20
  • workerNodeArgs 额外的 node.js 参数 ['--max-old-space-size', '1024']
  • poolTimeout 闲置时定时删除 worker 进程,默认为 500ms
  • poolParallelJobs 一个 pool 的并行任务数

如果项目的 css 文件也很多其实不妨为 css 也加上 thread-loader。

uglifyjs-webpack-plugin

js 完成编译之后通常还会有一个 uglify 的过程,这里如法炮制即可

optimization: {
    minimizer: [
      new UglifyJsPlugin({
        cache: '.uglifyJsCache',
        parallel: os.cpus().length,
        uglifyOptions: {}
      })
   ]
}

是不是很熟悉,加一个 cache 和 parallel 就可以了。

好了,本文到这里就结束了。如果本文对你有帮助不妨点个赞,如果有问题,非常欢迎来讨论(最好带上代码)。本文没有加时间的对比,因为我觉得没有什么意义,不同项目大小和参数设置会带来完全不同的效果。本文的方式适不适合你的项目,加一下试试就知道了。


以上所述就是小编给大家介绍的《webpack4 js构建速度优化》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

虚拟化与云计算

虚拟化与云计算

《虚拟化与云计算》小组 / 电子工业出版社 / 2009-10 / 45.00元

本书系统阐述了当今信息产业界最受关注的两项新技术——虚拟化与云计算。云计算的目标是将各种IT资源以服务的方式通过互联网交付给用户。计算资源、存储资源、软件开发、系统测试、系统维护和各种丰富的应用服务,都将像水和电一样方便地被使用,并可按量计费。虚拟化实现了IT资源的逻辑抽象和统一表示,在大规模数据中心管理和解决方案交付方面发挥着巨大的作用,是支撑云计算伟大构想的最重要的技术基石。本书以在数据中心采......一起来看看 《虚拟化与云计算》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具