Install pnpm package manager
Go to file
Don Denton 6217a9d8c4 feat: add version_file_path option
Using the same logic as `actions/setup-node`, we can support `asdf`, `volta` or other version management techniques.
2024-11-28 00:05:00 -05:00
.github feat: add version_file_path option 2024-11-28 00:05:00 -05:00
dist feat: add version_file_path option 2024-11-28 00:05:00 -05:00
src feat: add version_file_path option 2024-11-28 00:05:00 -05:00
test feat: add version_file_path option 2024-11-28 00:05:00 -05:00
.editorconfig Update .editorconfig 2020-05-08 10:35:40 +07:00
.gitattributes Fix .gitattributes 2020-05-09 08:13:09 +07:00
.gitignore feat!: node20 upgrade (#110) 2024-02-08 11:22:15 +01:00
action.yml feat: add version_file_path option 2024-11-28 00:05:00 -05:00
LICENSE.md 2020 2020-02-26 17:29:08 +07:00
package.json refactor: replace fs-extra with Node.js built-in fs methods (#120) 2024-04-16 11:26:31 +02:00
pnpm-lock.yaml refactor: replace fs-extra with Node.js built-in fs methods (#120) 2024-04-16 11:26:31 +02:00
README.md feat: add version_file_path option 2024-11-28 00:05:00 -05: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.

version_file_path

The version_file_path input accepts a path to a file containing the version of pnpm to be used. For example .tool-versions (if you use asdf), or package.json (if you use the engines property or volta instead of corepack).

The action will search for the version file relative to the repository root.

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 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: pnpm/action-setup@v4
        with:
          version: 9

Install only pnpm with a version file

This works when you use volta, asdf, etc.

on:
  - push
  - pull_request

jobs:
  install:
    runs-on: ubuntu-latest

    steps:
      - uses: pnpm/action-setup@v4
        with:
          version_file_path: ".tool-versions" # with asdf
          # version_file_path: "package.json" # with volta

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: pnpm/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: pnpm/action-setup@v4
        with:
          version: 9
          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: pnpm/action-setup@v4
        name: Install pnpm
        with:
          version: 9
          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