巧用windows的move命令结合jenkins让npm构建速度上来

一.背景

jenkins构建vue2的项目,每次都很慢,即便非常顺利都要1分多钟。之前的文章想到的私服的方式,windows下利用verdaccio私服让npm构建速度上来-CSDN博客。其实慢的原因不仅仅是依赖下载的问题。

二.还有哪里慢

1.源代码同步慢

从构建日志发现有一句命令:

复制代码
git.exe init C:\Users\Administrator\.jenkins\workspace\qiankunbag-vue # timeout=10

这句话执行时,会清空整个项目qiankunbag-vue文件夹。而其中的node_modules文件夹有42665个文件,大小248M。

2.真正慢的是删除node_modules文件夹慢

手动尝试删除该文件夹,发现删除都要几十秒,几万个小文件,没有办法啊!但是发现用手动剪切文件夹却非常快,大概不到1秒。所以,优化的思路就有了。

三.优化的思路

经过思考,我准按照下面的思路来编写构建脚本。

0.jenkins同步代码

同步时,自动清空项目文件夹,里面已经没有了node_modules文件夹,所以速度提升了。

1.将上级目录备份的node_modules文件夹剪切到项目目录

使用windows的move命令,类似手工操作的剪切,速度很快。

2.npm安装组件

与之前不变,还是npm install

3.npm构建项目

与之前不变,还是npm run build:prod

4.备份node_modules文件夹

使用windows的move命令,类似手工操作的剪切,速度很快。

5.发布dist文件夹

还是之前不变,

复制代码
xcopy .\dist  C:\SoftwareDownloads\nginx-1.25.2\dist /E /Y /I  1>null

四.jenkins最终的构建steps

使用Execute Windows batch command,构建三个步骤,分别是

复制代码
move ..\node_modules .\node_modules
npm install

npm run build:prod

move .\node_modules ..\node_modules
xcopy .\dist  C:\SoftwareDownloads\nginx-1.25.2\dist /E /Y /I 1>null

为啥分为三个步骤呢?

因为发现npm的命令执行后,其他的命令就不继续执行了。原因暂没有想明白,现象就是这样,所以分开为3个了。

五.脚本的健壮性

如果人工干预,把上级目录的node_modules删除了。该任务仍然能正常构建,只是第一步会提示没有找到node_modules文件,npm install会全量从私服去安装组件,大不了就是慢点而已。

最终构建的速度提升为30秒左右。

相关推荐
摇滚侠6 小时前
黑马 Elasticsearch 全套教程,黑马旅游网案例
大数据·elasticsearch·jenkins
jay神7 小时前
基于团队模式的C程序设计课程辅助教学管理系统
java·spring boot·vue·web开发·管理系统
钛态8 小时前
前端TypeScript高级技巧:让你的代码更安全
前端·vue·react·web
身如柳絮随风扬11 小时前
使用 Docker 部署 Jenkins 并实现自动化部署 —— 从零到一的 CI/CD 实践指南
docker·自动化·jenkins
醉颜凉12 小时前
Elasticsearch高阶聚合实战:Pipeline Aggregation 用法详解与典型场景全攻略
大数据·elasticsearch·jenkins
测试那点事儿1 天前
第2章零基础接口自动化到 Jenkins 持续集成【本地环境准备与首次跑通】
ci/cd·自动化·jenkins
吴声子夜歌1 天前
Vue3——路由管理
前端·vue·es6·vue-router
测试那点事儿1 天前
第1章 零基础接口自动化到 Jenkins 持续集成【看懂接口自动化框架全景】
ci/cd·自动化·jenkins
测试那点事儿1 天前
第4章 零基础接口自动化到 Jenkins 持续集成【写第一个 YAML 接口测试用例】
ci/cd·自动化·jenkins
测试那点事儿1 天前
第3章零基础接口自动化到 Jenkins 持续集成【项目结构和核心模块入门】
ci/cd·自动化·jenkins