CI 每次都重新下载依赖时,可以让缓存键跟 lockfile 的 hash 绑定。Node 项目可以直接这样写:
name: test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm test
setup-node 会根据 package-lock.json 生成缓存键,锁文件变化后就不会误用旧依赖。环境:GitHub Actions、Node 20、npm,仓库里要提交 package-lock.json。这里缓存的是 npm 下载内容,不是跳过 npm ci。