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

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions