优化GitHub Action构建速度:对npm install进行的一些优化

参考了这篇文章:在GitHub Action 优化Node.js App 的环境建置

文中给出的最优解:

一开始使用npm ci代替npm install,但发现npm ci永远都会先把node_modules 删掉再安装一遍packages

所以如果我们把node_modules缓存起来,并且确认package-lock.json和node version 等因素都没有改变时,就不必重新跑一遍npm ci

- name: Cache Node Modules
  uses: actions/cache@v2
  with:
   path: node_modules
   key: node-modules-${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}

- name: Install Packages
  run: test -d node_modules && echo "node_modules exists" || npm ci

然而不知道是什么原因,尽管package-lock.json没有变化,我每次push代码后,都会执行npm ci,达不到使用缓存的作用。经过多次尝试后,更改了一下代码

  # 根据 key 判断是否命中 node_modules
  - name: Cache Node Modules
    id: cache-node-modules
    uses: actions/cache@v2
    with:
      path: node_modules
      key: node-modules-${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('package-lock.json') }}

  # true代表缓存命中,node_modules没有变化,而''代表没有命中,node_modules发生变化
  - name: Debug Cache Hit
    run: echo "${{ steps.cache-node-modules.outputs.cache-hit }}"

  # 只有结果是''时才执行
  - name: Install Packages
    if: steps.cache-node-modules.outputs.cache-hit == ''
    run: npm ci

若有异议,欢迎批评指正!

参考文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值