• Nodejs打包构建时长优化


    优化策略

    底层软件硬件调整

    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,否则可能出现依赖异常导致安装失败。

    如对您有帮助,支持下呗!

    微信

    支付宝

  • 相关阅读:
    注册算法入门
    call传参之通过堆栈
    winhex注意
    输入字符串长度
    integer promotion
    网页flash兼容浏览器代码
    逆向工程——注册篇
    esp定律的一点说明
    base64
    意外
  • 原文地址:https://www.cnblogs.com/Dev0ps/p/15509671.html
Copyright © 2020-2023  润新知