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

news/2024/7/10 0:01:40 标签: jenkins, vue, 构建,

一.背景

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秒左右。


http://www.niftyadmin.cn/n/5361124.html

相关文章

云原生 API 网关链路追踪能力重磅上线

云原生API网关介绍 云原生 API 网关是腾讯云基于开源网关推出的一款高性能高可用的云原生 API 网关产品,作为云上流量入口,集成请求分发、API 管理、流量监控、访问限制等功能,是微服务架构和容器架构中的重要组件。 TSE 云原生 API 网关提…

【Go语言成长之路】Hello Go

文章目录 Hello Go一、建立工程目录二、开启代码追踪三、编写代码四、测试代码 Hello Go 一、建立工程目录 pzspzs-ubuntu22:~$ mkdir go_study/hello -p pzspzs-ubuntu22:~$ cd go_study/hello​ 在hello目录下,我们会编写属于自己的第一个Go demo例子&#xff0…

编程实例分享,眼镜店电脑系统软件,配件验光管理顾客信息记录查询系统软件教程

编程实例分享,眼镜店电脑系统软件,配件验光管理顾客信息记录查询系统软件教程 一、前言 以下教程以 佳易王眼镜店顾客档案管理系统软件V16.0为例说明 如上图, 点击顾客档案,在这里可以对顾客档案信息记录保存查询,…

根据路由动态注册组件失败

动态注册组件 方式1 import 这种跟webpack的版本有关系 import低版本不支持传入动态参数 <template><components :is"componentName" v-show"isShow" :key"componentName"></components> </template>const _import fi…

NUXTJS安装始终报错无法正常运行问题解决

近日在了解NuxtJS&#xff0c;按照官方给出方法进行安装后&#xff0c;不是报错&#xff0c;就是安装成功后运行不了。执行npm run dev后始终运行出错&#xff0c;判断肯定是对应版本问题&#xff0c;沿着这方向研究&#xff0c;最终运行成功了。 文档地址&#xff1a;安装 - …

重新配置vue项目时出现的:连接已断开问题

在新机器上配置完node.js、vue-cli&#xff0c;配置了node_modules后&#xff0c;命令行运行vue ui后&#xff0c;出现了如下报错&#xff1a; C:\Users\LEN>vue ui &#x1f680; Starting GUI... &#x1f320; Ready on http://localhost:8000 node:events:496throw e…

使用websocket建立长链接实现用户点对点即时通讯

WebSocket是一种网络传输协议&#xff0c;位于OSI模型的应用层&#xff0c;设计用于在单个TCP连接上进行全双工通信。 WebSocket的主要特点包括&#xff1a; 全双工通信&#xff1a;WebSocket允许服务器和客户端之间进行双向实时通信。这与传统的HTTP请求不同&#xff0c;后者…

unity addressables 加载资源和场景 显示进度条(主要用于WebGL)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、addressables是什么&#xff1f;二、导入Addressables三、创建Addressables Settings 资产包管理四、资源打包五、环境模拟六、查看重复资源七、选择Bundle…