- 前因 一般情况下 随着项目体积的增大,打包的速度也会增大,全量打包的话会导致时间过长,所以我们需要只打包本次修改的文件
了解md5
md5 是一种基础加密方式,在这里他最大的好处就是,只有文件内容发生改变时,才会生成新的md5戳,不修改的话每次生成的都是一样的
node crypto、fs模块
- fs.readFileSync(“文件”) 可读取文件内容
- node 自带了crypto 加密模块,可使用 crypto.createHash("md5"),可生成md5戳
- 由于多页面项目相对比较独立,所以生成的md5戳会比较多,比较起来比较麻烦,此时可对单个项目生成的md5文件整合再进行一次md5的加密
- 此时生成的md5戳,可以和上次打包的md5 进行比较,如果发生改变则证明该项目进行了修改,只对这个项目进行打包即可
优化commom 模块的打包
之前是发现common模块内有文件修改了,为了防止页面未能及时更新所以打包是进行全量打包,避免了上述问题,但是也增加了很多无用的打包,所以进行优化。
- 现在打包时,发现common模块内的components 文件进行修改时,读取修改文件的路径
- 遍历所有项目的 .vue 文件和 index.js 文件,观察他们是否引用了对应的公共组件进行标记,生成引用的list
- 读取此次打包修改的项目,进行合并、压缩
好处
增量打包更新大大提升了项目的打包速度,也不必为了未修改的文件而进行打包,避免了 随着项目的增大打包时间过长的问题