背景
某天,坐在对面的测试同事无意间说了一句,“为什么前端工程构建这么慢?”,成功引起了我的注意。 我打开CICD看了一下,很快定位到是在install的过程中慢了。
处理
这个处理的方法有很多,如开启缓存npm包,nexus加缓存,shell判断情况install等等。 我个人觉得我们最好的方案就是后者,shell加判断,如果package.json有变化了,才进行install操作。
#判断文件是否存在
if [! -f "package.json.md5" ];then
echo "文件不存在,需要重新安装依赖"
npm install
#把文件的md5值写入到目标文件中
md5sum package.json>package.json.md5
else
echo "文件已经存在"
fi
#检查md5sum是否有变更
if(md5sum -c --status package.json.md5);then
echo "md5值一致"
else
echo "md5值不一致,需要重新安装依赖"
npm install legacy-peer-deps
md5sum package.json>package.json.md5
fi
npm run build
加上面脚本后,流水构建时间从原本的平均6分钟,改进到平均3分钟,压缩将近50%时间,年底绩效又有东西写了。