Repository navigation
What's Changed
New Features
- Version ranges — the
versioninput now accepts a version range following npm's syntax, such as^11,11.x,>=10.0.0 <12.0.0,10.0.0 - 11, or^10 || ^11, and installs the highest published version satisfying it. devEngines.packageManagersupport — the action now readsdevEngines.packageManagerfrompackage.json, taking precedence overpackageManagerthe same way pnpm reads them. Itsversioncan be an exact version or a version range, and the latest version is installed if it's omitted.- Lockfile version — when the version comes from
package.json, apnpm-lock.yamlnext to it that locks a pnpm version satisfying it is used instead, so the action installs the same version pnpm itself runs, without querying the npm registry.
Improvements
- Faster cached setup — a pnpm version that is already cached on the runner is used without verifying it against the npm registry first.
- Clear error for missing builds — the action checks that pnpm provides a build of the version for the runner's platform and architecture before downloading it, instead of failing in the middle of the download.
- Clearer logs — the logs now describe each step of choosing and installing the pnpm version, and the download and extraction commands no longer print their verbose output.
Bug Fixes
- Stale tags — tags such as
latest-10,latest-11, ornextare now resolved from thepnpmpackage instead of@pnpm/exe, whose tags fell behind. For example,nextresolved to pnpm 6.31.0 andlatest-11to 11.26.0. Exact versions are verified against the same package, so a version listed only under@pnpm/exeis no longer accepted. - Interrupted installs reused as cached — an install that didn't complete, such as one whose download failed, is no longer treated as cached by later runs on the same runner.
- pnpm 11 and above on x64 macOS — the action no longer rejects pnpm 11 and above on x64 macOS runners, since newer releases provide builds for it.
- Error annotation for
package.jsonwithout a version — apackage.jsonwithout a pnpm version no longer raises an error annotation when the action falls back to the latest version.
Development Tooling Changes
- Replaced tsup with Rolldown as the bundler.
- Restructured the source code around a single setup flow in
main.ts, with async file reads in place ofexistsSyncchecks. - Required doc comments with
eslint-plugin-jsdoc, and made lint fail on warnings. - Reordered the pre-commit hook to run type checking first and the formatter after the linter.
- Configured Dependabot with a cooldown for npm packages, and grouped Vitest updates.
- Switched the project's own
package.jsontodevEngines.packageManager, removed its root package name andenginesfield, and disabled auto-installing peer dependencies. - Expanded CI coverage to verify pnpm 10 on Windows arm64 runners and to test a version range input.
- Trimmed
CLAUDE.mdto the non-obvious facts a fresh session needs. - Bumped pnpm to 12.15.0, Node.js to 24.22.1, and many other development dependencies.
Full Changelog: v2.0.0...v2.1.0