hgq's docs
主页
ES6-阮一峰 (opens new window)
Vue文档 (opens new window)
Axios文档 (opens new window)
Vue Router (opens new window)
Vuex文档 (opens new window)
面试题-Vue (opens new window)
面试题-JS (opens new window)

guoguoqiqi

漫不经心的向往
主页
ES6-阮一峰 (opens new window)
Vue文档 (opens new window)
Axios文档 (opens new window)
Vue Router (opens new window)
Vuex文档 (opens new window)
面试题-Vue (opens new window)
面试题-JS (opens new window)
  • webpack是什么、为什么选择它
  • webpack中module、chunk和bundle的概念
  • 说一下在webpack中的loader和plugin的不同
  • webpack 三种hash的区别
  • webpack基本核心概念
  • webpack工作机制
  • 常用的Loader
  • 常用的Plugin
  • webpack配置与优化实践
  • webpack热更新原理
  • 如何配置webpack热更新
  • 如何提升webpack构建速度
    • babel中polyfill的作用
    • npm和yarn的对比
    • 如何减小打包体积提高页面加载速度
    • 介绍SourceMap
    • 搭建一个前端工程
    • 自定义loader
    • 自定义plugin
    • 相关面试题集合
    • 相关文档网站
    • 对比一下webpack、vite、rollup等构建工具.md
    • loader、plugin的区别,以及编写的思路
    • css-loader和style-loader的区别
    • url-loader和file-loader的区别
    • webpack代码分割和公共代码提取
    • Webpack
    guoguoqiqi
    2022-02-15

    如何提升webpack构建速度

    # 如何提升webpack构建速度

    # 分析打包速度

    使用插件 speed-measure-webpack-plugin

    # 常用优化方法

    1. 优化Loader配置

    由于Loader对文件的转换操作很耗时,所以需要让尽可能少的文件被Loader处理。我们可以通过以下3方面优化Loader配置:

    • 优化正则匹配
    • 通过cacheDirectory选项开启缓存
    • 通过include、exclude来减少被处理的文件
    1. 优化resolve.modules配置

    resolve.modules 用于配置Webpack去哪些目录下寻找第三方模块。resolve.modules的默认值是[node modules],含义是先去当前目录的/node modules目录下去找我们想找的模块,如果没找到,就去上一级目录../node modules中找,再没有就去../ .. /node modules中找,以此类推,这和Node.js的模块寻找机制很相似。当安装的第三方模块都放在项目根目录的./node modules目录下时,就没有必要按照默认的方式去一层层地寻找,可以指明存放第三方模块的绝对路径,以减少寻找

    1. 优化resolve.alias配置

    resolve.alias配置项通过别名来将原导入路径映射成一个新的导入路径

    1. 优化resolve.extensions配置

    在导入语句没带文件后缀时,Webpack 会在自动带上后缀后去尝试询问文件是否存在。默认是:extensions :[‘. js ‘,’. json ’] 。也就是说,当遇到require ( '. /data ’)这样的导入语句时,Webpack会先去寻找./data .js 文件,如果该文件不存在,就去寻找./data.json 文件,如果还是找不到就报错。如果这个列表越长,或者正确的后缀越往后,就会造成尝试的次数越多,所以 resolve .extensions 的配置也会影响到构建的性能

    • 后缀尝试列表要尽可能小,不要将项目中不可能存在的情况写到后缀尝试列表中
    • 频率出现最高的文件后缀要优先放在最前面,以做到尽快退出寻找过程
    • 在源码中写导入语句时,要尽可能带上后缀,从而可以避免寻找过程。例如在确定的情况下将 require(’. /data ’)写成require(’. /data.json ’),可以结合enforceExtension 和 enforceModuleExtension开启使用来强制开发者遵守这条优化
    1. 优化resolve.noParse配置

    noParse配置项可以让Webpack忽略对部分没采用模块化的文件的递归解析和处理,这 样做的好处是能提高构建性能。原因是一些库如jQuery、ChartJS 庞大又没有采用模块化标准,让Webpack去解析这些文件既耗时又没有意义

    1. 提取公共代码

    2. 按需加载代码

    3. 优化SourceMap

    因为不同的source map配置选项生成的映射文件内容不同,比如有的不会生成代码的列信息

    1. 开启多进程打包
    • thread-loader
    • HappyPack
    1. 利用缓存
    • cache-loader
    • HardSourceWebpackPlugin(正在使用的,能提升90%的时间)

    # 参考文章链接

    Vue项目Webpack优化实践,构建效率提高50% (opens new window)
    玩转 webpack,使你的打包速度提升 90% (opens new window)
    你可能不知道的9条Webpack优化策略 (opens new window)
    学习 Webpack5 之路(优化篇) (opens new window)

    ← 如何配置webpack热更新 babel中polyfill的作用→

    最近更新
    01
    vuex数据持久化怎么做
    05-22
    02
    vue的动态路由怎么配置使用
    05-22
    03
    vue权限控制一般怎么做
    05-22
    更多文章>
    Theme by Vdoing | Copyright © 2022-2022 Guoquoqiqi | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式