GitHub Actions 缓存为什么没生效?
我在 GitHub Actions 里配置了缓存,但每次运行都重新安装依赖,感觉缓存根本没用上。
我用的是 Node.js 项目,缓存 key 是 node-modules-${{ hashFiles('package-lock.json') }},按理说 lock 文件没变就应该命中缓存才对。但日志里一直显示 Cache not found for input keys。
这是我的 workflow 配置片段:
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
是不是路径写错了?还是 key 的生成逻辑有问题?
你缓存的是
~/.npm,但这个是 npm 自己的缓存目录,不是项目里的node_modules。npm install 安装的依赖是放在项目根目录的node_modules文件夹里,不是~/.npm。所以正确的配置应该是:
把 path 改成
node_modules就好了。另外顺便提一嘴,restore-keys 里的 key 建议写成
${{ runner.os }}-node-,这样当精确 key 没命中时,会自动找前缀匹配的缓存,多少能起点作用。