【发布时间】:2021-01-21 08:39:55
【问题描述】:
我想缓存 npm 依赖项,这样我就不会在每次推送时都执行 npm install 而只是从缓存中加载它。
我认为 github action 现在支持这个?:How do I cache steps in GitHub actions?
这里有几个案例
- 如果
package.json发生变化,这意味着yarn.lock或package-lock.json发生变化,因此请执行 npm 安装和更新缓存 - 扩展我的上述观点,贡献者可以同时做
yarn install和npm install
从上述同一个问题,我将我的 github 操作更改为类似的内容
name: Tsc compilation test
on: [push, pull_request]
jobs:
build:
name: Build
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Cache NPM dependencies
uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.OS }}-npm-cache-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-npm-cache-
- name: Install dependencies
run: npm install
- name: Test tsc
run: npm run ts-compile-check
这仍然是 npm install 并且没有减少我安装依赖项的计算时间(所以我不确定这是否正常工作)
然后我做了yarn install axios,希望它会更新我的缓存,但在安装后我看到它已记录
Post job cleanup.
Cache hit occurred on the primary key Linux-npm-cache-, not saving cache.
所以这是我的问题,是否有可能实现
- 如果
package.json发生变化,这意味着yarn.lock或package-lock.json发生变化,npm install也会发生变化并更新缓存 - 扩展我的上述观点,贡献者可以同时做
yarn install和npm install
有人可以解释一下吗
with:
path: ~/.npm
key: ${{ runner.OS }}-npm-cache-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-npm-cache-
【问题讨论】:
-
像github.com/actions/cache 这样的操作会更好吗?或者像github.com/tinovyatkin/alphabank-pay-node/blob/… 这样的另一个例子会显示出让您的案例更好地工作的差异吗?
-
有关密钥的详细信息,另请参阅github.com/ktmud/cached-dependencies#cache-configs。
-
您的 package-lock.json 是否已在您的仓库中签入?否则,缓存键将无法正确计算,因为锁定文件仅在下一步生成。
标签: github npm caching yarnpkg github-actions