webpack生产环境增量构建,享受火箭一般的提速~

背景:

因为公司屎山代码太多了,每次生产构建都要10几分钟,要改得从架构开始改起,还得保证屎山代码不会持续产出。想想就绝望,改不动,真的改不动。所以想通过曲线救国的方式来优化构建过程。

如果能像开发环境一样只针对修改的代码增量构建就完美了。沿着这个思路去思考,决定采用通过缓存编译结果来提高构建速度的方式来优化。

下面是实测对比:

第一次因为还没生成缓存文件,所以还是得10几分钟。从第二次开始,构建速度就有了质的提升。提速700%~~,直接起飞。

解决方案如下:

[email protected]版本中,可以通过cache属性来配置持久化构建。

javascript 复制代码
module.exports = {
 // ...其他配置
 cache: {
    type: 'filesystem', // 使用文件系统缓存
    version: '1.0', // 缓存版本号
    buildDependencies: {
      config: [__filename], // 当配置文件变化时,清除缓存
      build: ['./build.js'], // 当构建脚本变化时,清除缓存
    },
    managedPaths: ['./node_modules'], // 不触发缓存清除的路径
 },
};

在这个示例中,webpack被配置为使用文件系统缓存,并且指定了缓存版本号为1.0。 当webpack.config.js文件或./build.js文件发生变化时,缓存将被清除。 此外,./node_modules目录被标记为不触发缓存清除的路径,因为它可能会频繁更新。

详细配置可以查看webpack官方文档:www.webpackjs.com/configurati...

相关文章参考:深度解析webpack5持久化缓存

[email protected]因为没有cache属性,需借助hard-source-webpack-plugin库实现

首先,安装插件

shell 复制代码
npm install hard-source-webpack-plugin --save-dev

然后,在Webpack配置文件中引入并使用这个插件:

javascript 复制代码
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');

module.exports = {
 // ...其他配置
 plugins: [
    new HardSourceWebpackPlugin(),
 ],
};

完结撒花,增量构建的功能就这么简单实现了。

缓存文件默认存在在 node_modules/.cache/hard-source/[confighash] 路径下。

当然,hard-source-webpack-plugin还有很多配置参数可以去对构建过程进行定制。有兴趣的小伙伴可以查看官方文档说明。

传送门:github.com/mzgoddard/h...

相关推荐
王景程4 分钟前
如何测试短信接口
java·服务器·前端
安冬的码畜日常27 分钟前
【AI 加持下的 Python 编程实战 2_10】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(中)
开发语言·前端·人工智能·ai·扫雷游戏·ai辅助编程·辅助编程
小杨升级打怪中32 分钟前
前端面经-JS篇(三)--事件、性能优化、防抖与节流
前端·javascript·xss
清风细雨_林木木36 分钟前
Vue开发网站会有“#”原因是前端路由使用了 Hash 模式
前端·vue.js·哈希算法
鸿蒙布道师1 小时前
OpenAI为何觊觎Chrome?AI时代浏览器争夺战背后的深层逻辑
前端·人工智能·chrome·深度学习·opencv·自然语言处理·chatgpt
袈裟和尚1 小时前
如何在安卓平板上下载安装Google Chrome【轻松安装】
前端·chrome·电脑
曹牧1 小时前
HTML字符实体和转义字符串
前端·html
小希爸爸1 小时前
2、中医基础入门和养生
前端·后端
局外人LZ1 小时前
前端项目搭建集锦:vite、vue、react、antd、vant、ts、sass、eslint、prettier、浏览器扩展,开箱即用,附带项目搭建教程
前端·vue.js·react.js
G_GreenHand2 小时前
Dhtmlx Gantt教程
前端