2021-03-27 19:45:01 +08:00
# Setup pnpm
2020-05-08 15:44:30 +08:00
2021-03-27 19:45:01 +08:00
Install pnpm package manager.
2020-05-08 15:44:30 +08:00
## Inputs
### `version`
2022-02-22 12:26:05 +08:00
Version of pnpm to install.
**Optional** when there is a [`packageManager` field in the `package.json` ](https://nodejs.org/api/corepack.html ).
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` .
2020-05-08 15:44:30 +08:00
### `dest`
2021-03-27 19:45:01 +08:00
**Optional** Where to store pnpm files.
2020-05-08 15:44:30 +08:00
2020-05-09 20:13:46 +08:00
### `run_install`
2020-05-10 13:00:23 +08:00
**Optional** (_default:_ `null` ) If specified, run `pnpm install` .
2020-05-09 20:13:46 +08:00
2020-05-10 13:08:45 +08:00
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.
2020-05-10 13:14:27 +08:00
If `run_install` is a YAML string representation of either an object or an array, pnpm will execute every install commands.
2020-05-10 13:08:45 +08:00
#### `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]` .
2023-07-08 07:02:46 +08:00
### `package_json_file`
2023-07-26 19:50:04 +08:00
**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 ](https://www.npmjs.com/package/@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.
2023-07-08 07:02:46 +08:00
2020-05-08 15:44:30 +08:00
## Outputs
### `dest`
Expanded path of inputs#dest.
### `bin_dest`
2021-03-23 13:53:37 +08:00
Location of `pnpm` and `pnpx` command.
2020-05-08 15:44:30 +08:00
## Usage example
2021-03-27 19:45:01 +08:00
### Just install pnpm
2020-05-10 13:14:27 +08:00
```yaml
on:
- push
- pull_request
jobs:
2022-01-30 00:17:29 +08:00
install:
runs-on: ubuntu-latest
2020-05-10 13:14:27 +08:00
2022-01-30 00:17:29 +08:00
steps:
2024-05-07 21:16:48 +08:00
- uses: pnpm/action-setup@v4
2022-01-30 00:17:29 +08:00
with:
2023-07-25 14:50:35 +08:00
version: 8
2020-05-10 13:14:27 +08:00
```
2021-03-27 19:45:01 +08:00
### Install pnpm and a few npm packages
2020-05-10 13:14:27 +08:00
2020-05-08 15:44:30 +08:00
```yaml
on:
- push
- pull_request
jobs:
2022-01-30 00:17:29 +08:00
install:
runs-on: ubuntu-latest
steps:
2024-03-28 05:12:51 +08:00
- uses: actions/checkout@v4
2022-01-30 00:17:29 +08:00
2024-05-07 21:16:48 +08:00
- uses: pnpm/action-setup@v4
2022-01-30 00:17:29 +08:00
with:
2023-07-25 14:50:35 +08:00
version: 8
2022-01-30 00:17:29 +08:00
run_install: |
- recursive: true
args: [--frozen-lockfile, --strict-peer-dependencies]
- args: [--global, gulp, prettier, typescript]
2020-05-08 15:44:30 +08:00
```
2021-02-18 09:30:07 +08:00
### Use cache to reduce installation time
2021-02-16 05:36:25 +08:00
```yaml
on:
- push
- pull_request
jobs:
2022-01-30 00:17:29 +08:00
cache-and-install:
2022-05-07 10:59:56 +08:00
runs-on: ubuntu-latest
2022-01-30 00:17:29 +08:00
steps:
2022-05-07 10:25:47 +08:00
- name: Checkout
2024-03-28 05:12:51 +08:00
uses: actions/checkout@v4
2022-05-07 10:25:47 +08:00
2022-06-18 04:17:05 +08:00
- name: Install Node.js
2024-03-28 05:12:51 +08:00
uses: actions/setup-node@v4
2022-05-07 10:25:47 +08:00
with:
2024-03-28 05:12:51 +08:00
node-version: 20
2024-06-12 22:38:46 +08:00
cache: 'pnpm'
2022-05-07 10:25:47 +08:00
2024-05-07 21:16:48 +08:00
- uses: pnpm/action-setup@v4
2022-05-07 10:25:47 +08:00
name: Install pnpm
with:
2023-09-28 00:17:23 +08:00
version: 8
2022-05-07 10:25:47 +08:00
run_install: false
- name: Get pnpm store directory
2022-10-18 18:23:15 +08:00
shell: bash
2022-05-07 10:25:47 +08:00
run: |
2023-03-08 07:12:26 +08:00
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
2022-05-07 10:25:47 +08:00
2024-03-28 05:12:51 +08:00
- uses: actions/cache@v4
2022-05-07 10:25:47 +08:00
name: Setup pnpm cache
with:
2023-03-08 07:12:26 +08:00
path: ${{ env.STORE_PATH }}
2022-05-07 10:25:47 +08:00
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
2021-02-16 05:36:25 +08:00
```
2021-02-18 09:30:07 +08:00
**Note:** You don't need to run `pnpm store prune` at the end; post-action has already taken care of that.
2021-02-16 05:36:25 +08:00
2020-05-08 15:44:30 +08:00
## Notes
2020-05-08 15:57:48 +08:00
This action does not setup Node.js for you, use [actions/setup-node ](https://github.com/actions/setup-node ) yourself.
2020-05-08 15:44:30 +08:00
## License
2024-03-28 05:17:57 +08:00
[MIT ](https://github.com/pnpm/action-setup/blob/master/LICENSE.md ) © [Hoàng Văn Khải ](https://github.com/KSXGitHub/ )