Skip to content

Package manager caching strategy for pnpm and Yarn Modern #1366

@MikeMcC399

Description

@MikeMcC399

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

Related

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions