1
0
mirror of https://github.com/pnpm/action-setup.git synced 2026-03-01 07:51:02 +08:00
Install pnpm package manager
Go to file
Justin Linn 71944f404a
chore: add GitHub config alignment (G01, G02, G03) (#2)
* chore: add alignment standards for github config

- Add .nvmrc file with Node.js 22
- Add PR template for consistent pull requests
- Add issue templates for bug reports, feature requests, and tasks
- Add standard labels via gh CLI (type, priority, status, area labels)

* fix: resolve form-data security vulnerability

Add pnpm override to force form-data>=4.0.4 which fixes
GHSA-fjxv-7rqg-78g4 (unsafe random function for boundary).

* chore: add .claude/settings.local.json to gitignore

* feat: Add claude commands

* fix: update pnpm version to 10.27.0 (valid release)

* fix: update pnpm version from 9 to 10 in all workflows

Update all workflow files to use pnpm version 10 to match
the packageManager field in package.json (pnpm@10.27.0).

This fixes the CI failure caused by version mismatch:
- pr-check.yml: version 9 → 10, matrix 9.15.5 → 10.27.0
- build-and-test.yml: version 9 → 10
- security.yml: version 9 → 10
- test.yaml: all version references updated to 10.27.0

* fix: remove packageManager field to allow testing multiple pnpm versions

The action tests multiple pnpm versions (9.x and 10.x). Having a
packageManager field in package.json causes version mismatch errors
when the workflow specifies a different version than packageManager.

* fix: use exact pnpm version 10.27.0 in workflows

The action validates that the version specified in workflows must
match the packageManager field in package.json exactly. Update
from version: 10 to version: 10.27.0 to match pnpm@10.27.0.

* fix: use local action in ci.yml with explicit version

Since packageManager was removed from package.json to allow testing
multiple pnpm versions, ci.yml must now specify the version explicitly.

Changed from using released @v4.0.0 to using ./ (local action) to test
the current code.

* fix: rename claude commands to use Windows-compatible filenames

Windows doesn't allow colons in filenames. Changed from using colons
(agents:action.md) to hyphens (agents-action.md) for cross-platform
compatibility.
2026-01-03 20:22:20 -05:00
.claude/commands chore: add GitHub config alignment (G01, G02, G03) (#2) 2026-01-03 20:22:20 -05:00
.github chore: add GitHub config alignment (G01, G02, G03) (#2) 2026-01-03 20:22:20 -05:00
dist feat: configure action for suncoast-innovation-guild org usage 2025-06-21 19:35:42 -04:00
src fix: not allow install multiple package manager (#161) 2025-03-28 08:37:14 +08:00
.editorconfig Update .editorconfig 2020-05-08 10:35:40 +07:00
.gitattributes Fix .gitattributes 2020-05-09 08:13:09 +07:00
.gitignore chore: add GitHub config alignment (G01, G02, G03) (#2) 2026-01-03 20:22:20 -05:00
.nvmrc chore: add GitHub config alignment (G01, G02, G03) (#2) 2026-01-03 20:22:20 -05:00
action.yml fix: add missing outputs metadata to action.yml (#127) 2024-06-12 16:45:37 +02:00
eslint.config.mjs chore: add GitHub config alignment (G01, G02, G03) (#2) 2026-01-03 20:22:20 -05:00
LICENSE.md 2020 2020-02-26 17:29:08 +07:00
package.json chore: add GitHub config alignment (G01, G02, G03) (#2) 2026-01-03 20:22:20 -05:00
pnpm-lock.yaml chore: add GitHub config alignment (G01, G02, G03) (#2) 2026-01-03 20:22:20 -05:00
README.md feat: configure action for suncoast-innovation-guild org usage 2025-06-21 19:35:42 -04:00
renovate.json Instruct renovate to ignore ajv updates 2021-03-23 11:47:55 +07:00
run.sh feat: standalone binary (#92) 2023-07-26 14:50:04 +03:00
tsconfig.json feat!: node20 upgrade (#110) 2024-02-08 11:22:15 +01:00

⚠️ Upgrade from v2!

The v2 version of this action has stopped working with newer Node.js versions. Please, upgrade to the latest version to fix any issues.

Setup pnpm

Install pnpm package manager.

Inputs

version

Version of pnpm to install.

Optional when there is a packageManager field in the package.json.

otherwise, this field is required It supports npm versioning scheme, it could be an exact version (such as 6.24.1), or a version range (such as 6, 6.x.x, 6.24.x, ^6.24.1, *, etc.), or latest.

dest

Optional Where to store pnpm files.

run_install

Optional (default: null) If specified, run pnpm install.

If run_install is either null or false, pnpm will not install any npm package.

If run_install is true, pnpm will install dependencies recursively.

If run_install is a YAML string representation of either an object or an array, pnpm will execute every install commands.

run_install.recursive

Optional (type: boolean, default: false) Whether to use pnpm recursive install.

run_install.cwd

Optional (type: string) Working directory when run pnpm [recursive] install.

run_install.args

Optional (type: string[]) Additional arguments after pnpm [recursive] install, e.g. [--frozen-lockfile, --strict-peer-dependencies].

package_json_file

Optional (type: string, default: package.json) File path to the package.json/package.yaml to read "packageManager" configuration.

standalone

Optional (type: boolean, default: false) When set to true, @pnpm/exe, which is a Node.js bundled package, will be installed, enabling using pnpm without Node.js.

This is useful when you want to use a incompatible pair of Node.js and pnpm.

Outputs

dest

Expanded path of inputs#dest.

bin_dest

Location of pnpm and pnpx command.

Usage example

Install only pnpm without packageManager

This works when the repo either doesn't have a package.json or has a package.json but it doesn't specify packageManager.

on:
  - push
  - pull_request

jobs:
  install:
    runs-on: ubuntu-latest

    steps:
      - uses: suncoast-innovation-guild/action-setup@v4
        with:
          version: 10

Install only pnpm with packageManager

Omit version input to use the version in the packageManager field in the package.json.

on:
  - push
  - pull_request

jobs:
  install:
    runs-on: ubuntu-latest

    steps:
      - uses: suncoast-innovation-guild/action-setup@v4

Install pnpm and a few npm packages

on:
  - push
  - pull_request

jobs:
  install:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: suncoast-innovation-guild/action-setup@v4
        with:
          version: 10
          run_install: |
            - recursive: true
              args: [--frozen-lockfile, --strict-peer-dependencies]
            - args: [--global, gulp, prettier, typescript]            

Use cache to reduce installation time

on:
  - push
  - pull_request

jobs:
  cache-and-install:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - uses: suncoast-innovation-guild/action-setup@v4
        name: Install pnpm
        with:
          version: 10
          run_install: false

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install

Note: You don't need to run pnpm store prune at the end; post-action has already taken care of that.

Notes

This action does not setup Node.js for you, use actions/setup-node yourself.

License

MIT © Hoàng Văn Khải