首页 > 编程语言 >Nodejs打包构建时长优化

Nodejs打包构建时长优化

时间:2023-11-17 17:02:29浏览次数:36  
标签:文件 CI 依赖 Nodejs lock yarn 构建 IO 打包

优化策略

底层软件硬件调整

CI过程中主要的压力还是集中在IO方向,增加CI节点提高整个CI池子的容量,把之前节点使用的硬盘更换为SSD可以增加IO吞吐量。同时把用于CI的node节点在K8S集群中隔离开来,让CI服务独享这些资源避免与其他资源发生抢占。

CI 工作台优化

优化CI工作台的代码,减少每次CI任务抓取git仓库里托管项目的代码量,提高整体的代码抓取的效率,减少网络IO和磁盘IO量。

强制启用内部软件源

要求各业务线的项目启用在内部搭建的软件源,尽量不要使用外部软件源,减少等待外部网络的下载时间。Nodejs使用verdaccio来搭建内部源并且设置国内的nodejs源作为上游,拉取到的包就会缓存到本地服务器,大大减少了不必要的网络开销。java和 php 分别使用了nexus和packagist。

验证

考虑到底层软件硬件的升级调整对IO性能提升很容易理解,就不在这里赘述,这里着重介绍一下引入yarn和把yarn.lock提交到代码仓库后带来的速度大幅提升。

安装 yarn

用yarn替换npm进行编译构建


yarn通过yarn.lock文件来分析和构建nodejs 的依赖环境,分析依赖生成yarn.lock需要花费大量的时间,如果仓库里面自带了满足依赖的yarn.lock文件,在CI的环节就会减少分析这一步。
以下矩阵可以反应出 yarn.lock 对于安装依赖包的速度影响

目前我们在流水线也默认启用了node_modules 复用机制,npm也同样会受益,但即便是有npm的node_modules 复用机制,大量测试后 isntall的速度yarn更有优势,可以考虑考虑使用yarn install来提速。

提交yarn.lock文件

前面也提到 yarn.lock对于nodejs CI提速有很重要的作用,同时也可以保障协同开发的工程中的依赖一致性。yarn.lock也应该提交到代码仓库中。同时,yarn的官方也强烈建议大家提交。如果git的.gitignore有限制,需要在放开yarn.lock允许提交。
本地代码测试的时候 运行yarn install生成yarn.lock文件

添加依赖包以及维护yarn.lock文件


注意这些操作都可以自动增量更新package.json和yarn.lock中的依赖关系。为了不破坏yarn.lock的正确性,此文件不要手动去修改。需要使用上游更新后的包,要使用yarn upgrade来引用最新的上游依赖。
如果git merge操作导致yarn.lock发生变化,应该在本地重新生成新的 yarn.lock文件后提交到git,否则可能出现依赖异常导致安装失败。

标签:文件,CI,依赖,Nodejs,lock,yarn,构建,IO,打包
From: https://www.cnblogs.com/gaoyanbing/p/17839178.html

相关文章

  • nodejs项目打包提速
    node打包耗时分析             插件安装    cnpmi hard-source-webpack-plugin    官方地址      https://www.npmjs.com/package/hard-source-webpack-plugin    配置之后初次打包会觉得没什么差异,主要是会先......
  • dubbo打包
    参考链接:链接一注意依赖分别放在父,子pom文件,以及子pom文件的主函数路径。子项目打包:https://blog.csdn.net/Yu_luoluo/article/details/101691933打包注意主项目安装:https://blog.csdn.net/weixin_45565886/article/details/127917961......
  • 探索人工智能的世界:构建智能问答系统之环境篇
    引言在之前的一篇文章中,我们已经对项目所需的知识点进行了简单的了解。今天,我们将开始搭建整个项目的环境。在接下来的文章中,我们将详细介绍如何配置项目所需的各种工具和环境,以确保项目的顺利进行。部署接下来,你可能需要多次重启电脑来确保环境变量的生效。这是必要的,因为在进......
  • 探索人工智能的世界:构建智能问答系统之前置篇
    引言在开始开发之前,我们首先要了解我们将会接触到的编程语言和组件。我本身是一名Java开发者,虽然也有接触过C、C++和PHP开发语言,但在工作中使用的并不多。因此,为了本次开发,我们选择了Python作为开发语言。大家都是从零开始,只要你有编程知识,就可以和我一起学习。回顾一下我们需要......
  • vue2 项目打包后自动压缩成zip文件
    安装依赖1pnpminstallfilemanager-webpack-plugin--save-dev在vue.config.js中添加如下代码constFileManagerPlugin=require('filemanager-webpack-plugin')//引入插件1configureWebpack:{2plugins:[3newFileManagerPlugin({......
  • nodejs敲门
    前言node.js是在电脑上,给js一个可以脱离浏览器运行的环境。功能上像jdk,操作为命令行。现在演化为可以做web服务器使用,拥有许多成熟的项目和插件。本文简单讲讲它,以及它的两个小用途(TS和WebApi服务器)。谈不上入门,只能算是“敲门”。  安装:nodejs官网和中文网都可以下载安......
  • 【Mquant】7:构建价差套利(三) ——空间误差校正模型
    1.上节回顾【Mquant】6:构建价差套利(二)上节带领大家编写了统计套利均值回归的程序,通过历史回测发现还不能进入实盘交易状态,原因出现在手续费率上,由于加密市场手续费率较高,我们选择国内期货市场,一般期货市场手续费率可以达到万分之一,个别品种手续费率可以达到万分之0.1。这节内......
  • 去除:Vue项目打包后生成的.map文件&文件hash值命名
    在vue.config.js文件中设置productionSourceMap和filenameHashing项为false即可。//vue.config.js文件module.exports={outputDir:'dist',assetsDir:'assets',publicPath:'./',//需注意是相对路径,不然dist打包访问后就会出现空白问题。productionSourceMap......
  • uniapp打包Android,出现崩溃Didn't find class "io.dcloud.application.DCloudApplicat
    自己创建的新的Android项目打包的时候一直崩溃,报错:Didn'tfindclass"io.dcloud.application.DCloudApplication"查找之后在app/build.gradle中发现添加multiDexEnabledtruecompileOptions{sourceCompatibilityJavaVersion.VERSION_1_8targetCompatibilityJavaV......
  • ASPNET项目打包时遇到错误:无法生成项目输出组内容文件来自Web(活动)
    试试在“解决方案资源管理器”中,刷新目标项目,看看项目中有没有一些文件丢失(以感叹号标识,如下图所示),如果有,将所有这些文件补上或者“从项目中排除”,然后再重新生成安装包。1.检查文件中是否有文件未包括到项目中,2。检查是否项目中有文件前面含有感叹号,特别是图像文件。他们可能是......