- 
                Notifications
    You must be signed in to change notification settings 
- Fork 365
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-actionto 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