Description
Situation
cypress-io/github-action
caches package manager dependencies for:
and offers no equivalent built-in functionality for:
Background
The variety of package managers has expanded since cypress-io/github-action
was originally developed when only npm and Yarn v1 Classic were available and in common use.
The action is set up to recognize the following lockfiles and use GitHub's @actions/cache to cache the related path:
Lockfile | Linux path |
---|---|
package-lock.json |
~/.npm |
yarn.lock |
~/.cache/yarn |
The above set of path settings does not however cover all currently used package managers:
Package manager | Command | Linux default example |
---|---|---|
npm | npm config get cache |
~/.npm |
pnpm v10 | pnpm store path |
~/.local/share/pnpm/store/v10 |
Yarn v1 | yarn cache dir |
~/.cache/yarn/v6 |
Yarn Modern node-modules |
yarn config get cacheFolder |
~/.yarn/berry/cache |
Yarn Modern pnp |
yarn config get cacheFolder |
~/.yarn/berry/cache |
This causes the action to attempt to cache unused paths:
~/.npm
(unused) for pnpm~/.cache/yarn
(non-existent) for Yarn Modern
Assessment
GitHub Actions offers a full suite of setup-*
actions to cache dependencies of commonly-used package managers.
For Cypress, the relevant caching action is actions/setup-node which offers caching for npm, Yarn (v1 and Modern) and pnpm.
Duplicating the capability from actions/setup-node into cypress-io/github-action
for pnpm and Yarn would involve a significant effort and on-going maintenance for the Cypress team.
Recommendations
- keep actions/setup-node for pnpm examples
- add actions/setup-node to Yarn Modern examples test: add yarn modern caching #1374
- add an option to
cypress-io/github-action
to disable package manager caching, leaving the default as caching enabled (related to Allow disabling cache #953) - add any new package manager caching recommendations into the README document