DingMing

丁大铭的个人空间,用来分享一些前端小技巧,默默成长吧,哈哈

Nuxt项目打包速度优化方案

  |  
 阅读次数

一、背景

最近在做nuxt项目,发现nuxt项目在打包部署的时间通常在十分钟左右,已经是非常的慢了
所以想着怎么能提升一下部署速度,顺便进行项目优化,研究发现方案如下…..

二、问题分析

经过排查,发现部署过慢的原因是 Jenkins 在部署的时候,因为nuxt的依赖,需要拷贝全量的 node_modules 到服务器上

T-T 这是个大问题呀,总所周知 node_modules 是宇宙中最重的依赖,他每次都进行全量拷贝,这个固然会消耗很多时间,和必有意义的缓存

三、解决方案

因为nuxt项目在服务端启动,必须依赖node_modules文件,所以node_modules是必须的

进过查找资料,找到了解决思路。

package.json中的npm包不是每次都新增或者跟新的,所以node_modules也不用更新,使用上一次的即可完美启动

围绕着这个思路我找到了一种解决方案

1.利用docker的缓存机制

docker是有缓存机制的,每次部署前。可以使用docker记录上一次的 package.json,与本次的 package.json 进行对比,如果产生了变化才拷贝当前的node_modules去服务器,没有变化使用服务端之前的node_modules即可

可是问题又来了,我们公司的 Jenkins 不在docker容器内,直接GG

开始想新的解决方法!!!

2.Jenkins添加选项,是否拷贝node_modules

经过和运维的协商和沟通,最终达成了这个方案,在部署时添加是否拷贝选项,
人为的判断是否拷贝node_modules,虽然有些low 但是效果很显著。

部署时长从十分钟减少到了两分左右,完美~~