Webpack5构建性能优化:构建耗时从150s到60s再到10s

这篇具有很好参考价值的文章主要介绍了Webpack5构建性能优化:构建耗时从150s到60s再到10s。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:京东科技 牛志伟

近期对Webpack5构建性能进行了优化,构建耗时从150s到60s再到10s,下面详细讲解下优化过程。

优化前现状

1.历史项目基于Vue3 + Webpack5技术栈,其中webpack配置项由开发者自己维护(没有使用@vue/cli-service),并且做了环境分离。

2.项目体量大约5000个modules左右,每次本地构建build时耗时约150s左右。

优化细节

环境分离

之前已经设计了环境分离,但是一些优化细节没有处理好:

•基础配置文件:webpack.base.js,主要配置了基础的loader和plugin等

•本地开发配置文件:webpack.dev.js,主要配置了devServer和样式、图片资源loader等,并merge基础配置

•生产环境配置文件:webpack.prod.js,主要配置了样式、图片资源loader以及资源压缩和样式抽离等,并merge基础配置

优化点:

•热加载相关配置,从base移到dev配置中,生产环境中不需要热更新

new webpack.HotModuleReplacementPlugin()

•dev配置中devtool类型选择,inline-source-map修改为eval-cheap-module-source-map,map文件使用内联方式构建速度更快。

devtool: 'eval-cheap-module-source-map'

•filename调整:js/[name].[fullhash].js去掉hash,本地开发环境启用热更新,不需要hash(生产环境需要hash刷新缓存)

output: {
    filename: 'js/[name].js',
    path: path.resolve(__dirname, '../dist'),
    publicPath: '/',
}

持久化缓存

base配置中开启持久化缓存(Webpack5新特性),首次构建耗时增加15%左右,但是二次构建耗时减少90%左右

cache: {
    type: 'filesystem'
}

Loader相关优化

•尽量减少loader,比如使用Asset modules(Webpack5新特性)替换url-loader、file-loader、raw-loader

// 字体和小于8kb的图片
{
    test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
    type: 'asset',
    parser: {
        dataUrlCondition: {
            maxSize: 8 * 1024,
        },
    }
}
// 图片资源
{
    test: /\.(png|svg|jpg|gif|cur)$/,
    type: 'asset/resource',
    exclude: [path.resolve(__dirname, '../../../assets/svg')],
}

•thread-loader耗时任务开启多线程

{
    test: /\.vue$/,
    use: ['thread-loader', 'vue-loader'],
},
{
    test: /\.(t|j)s$/,
    exclude: /node_modules/,
    use: ['thread-loader', 'babel-loader'],
},
{
    test: /\.(sa|sc|c)ss$/,
    use: ['thread-loader', 'style-loader', 'css-loader', 'sass-loader'
},

•esbuild-loader替换babel-loader(由于改动较大,没有尝试)

Plugin相关优化

•使用speed-measure-webpack-plugin分析各个plugin、loader编译时间

•尽量减少plugin,比如HotModuleReplacementPlugin只在dev开启

•升级老旧plugin,比如terser-webpack-plugin版本从2升级到5,构建性能直接提升50%左右,具体原因有了解的同学可以打在评论区。

优化后效果

•不启用缓存情况下耗时从150s减少到60s以内

•优化后speed-measure-webpack-plugin编译速度分析

•启用持久化缓存情况下,二次构建减少到10s以内

Webpack5总结

以下是从基础、进阶、优化、插件使用以及打包原理几个方面做的Webpack5总结,有遗漏之处欢迎评论留言讨论文章来源地址https://www.toymoban.com/news/detail-438619.html

到了这里,关于Webpack5构建性能优化:构建耗时从150s到60s再到10s的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 基于 Vue3 + Webpack5 + Element Plus Table 二次构建表格组件

    基于 Vue3 + Webpack5 + Element Plus Table 二次构建表格组件

    基于 Vue3 + Webpack5 + Element Plus Table 二次构建表格组件,开箱即用 A Vue 3.x Table Component built on Webpack 5 该组件库可供学习、参考和用于二次开发。 1.基于 Webpack 5 构建 2.全面支持 Vue 3 3.支持 JSON 序列化表格快速配置 4.已内置 Pagination 分页 5.支持自定义 prop 列名 6.支持单元格内容自

    2024年04月13日
    浏览(15)
  • 《基于 Vue 组件库 的 Webpack5 配置》7.路径别名 resolve.alias 和 性能 performance

    路径别名 resolve.alias 性能 performance

    2024年02月11日
    浏览(11)
  • Unity 性能优化四:UI耗时函数、资源加载、卸载API

    Unity 性能优化四:UI耗时函数、资源加载、卸载API

    1.1 Canvas.SendWillRenderCanvases 这个函数是由于自身UI的更新,产生的耗时 1. 这里更新的是vertex 属性,比如 color、tangent、position、uv,修改recttransform的position、scale,rotation并不会导致顶点属性改变,因为顶点的position是根据pivot的偏移决定的,而改变其size、pivot、anchor,则会修改

    2024年02月14日
    浏览(13)
  • WebPack优化
Webpack构建速度优化

    WebPack优化 Webpack构建速度优化

    目录 1 常用的loader和plugin 2 WebPack多入口配置: 3 如何抽离压缩css文件 4 webpack如何抽离公共代码和第三方代码  5 webpack如何实现异步加载JS (懒加载) 6  module chunk bundle 的区别 7  webpack优化构建速度 hard-source-webpack-plugin 8 webpack 优化产出代码 9 什么是Tree-Shaking 10 ES6 Module和 Commo

    2024年02月11日
    浏览(10)
  • webpack的性能优化(一)——分包优化

    webpack的性能优化(一)——分包优化

            默认情况下,Webpack 会将所有代码构建成一个单独的包,这在小型项目通常不会有明显的性能问题,但伴随着项目的推进,包体积逐步增长可能会 导致应用的响应耗时越来越长 。归根结底这种将所有资源打包成一个文件的方式存在两个弊端: 「 资源冗余 」 :客

    2024年02月02日
    浏览(10)
  • webpack优化前端框架性能

    提升开发体验 提升打包构建速度 减少代码体积 优化代码运行性能 提升开发体验使用 SourceMap 问题:正常情况下,开发环境不输出dist 文件 直接保存在内存中,浏览器控制台source中可以看到, 但是报错提示行数不正确,它会以打包后的行数进行提示 解释:sourceMap 可以生成源

    2024年02月15日
    浏览(12)
  • webpack性能优化方案(详细)

    webpack性能优化方案(详细)

    💂 个人网站:【紫陌】【笔记分享网】 💅 想寻找共同学习交流、共同成长的伙伴,请点击【前端学习交流群】 文章最后有作者l联系方式(备注进群) webpack的性能优化较多,我们可以对其进行分类: 优化一:打包后的结果,上线时的性能优化。(比如分包处理、减小包体

    2024年02月16日
    浏览(8)
  • 如何⽤webpack 来优化前端性能

    如何⽤webpack 来优化前端性能? ⽤webpack 优化前端性能是指优化 webpack 的输出结果,让打包的最终结果在浏览器运⾏快速⾼效。 压缩代码:删除多余的代码、注释、简化代码的写法等等⽅式。可以利⽤webpack的 UglifyJsPlugin 和 ParallelUglifyPlugin 来压缩JS⽂件, 利⽤ cssnano (css-lo

    2024年02月13日
    浏览(10)
  • 性能优化-webpack配置gzip

    3步搞定,实测1.3Mjs压缩到363k,体积减少70% 1.装包 yarn add compression-webpack-plugin --dev 2.配置webpack 打开config/webpack.config.js 1)在 module.exports 导出函数前面引入插件 2)添加配置 位置,搜索new HtmlWebpackPlugin(在其上边添加配置

    2024年02月15日
    浏览(9)
  • 借助webpack来优化前端性能

    借助webpack来优化前端性能

    随着前端的项目逐渐扩大,必然会带来的一个问题就是性能 尤其在大型复杂的项目中,前端业务可能因为一个小小的数据依赖,导致整个页面卡顿甚至奔溃 一般项目在完成后,会通过 webpack 进行打包,利用 webpack 对前端项目性能优化是一个十分重要的环节 通过 webpack 优化前

    2024年02月04日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包