pnpm-setup/README.md

146 lines
3.2 KiB
Markdown
Raw Normal View History

2021-03-27 11:45:01 +00:00
# Setup pnpm
2020-05-08 07:44:30 +00:00
2021-03-27 11:45:01 +00:00
Install pnpm package manager.
2020-05-08 07:44:30 +00:00
## Inputs
### `version`
2022-02-22 04:26:05 +00: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 07:44:30 +00:00
### `dest`
2021-03-27 11:45:01 +00:00
**Optional** Where to store pnpm files.
2020-05-08 07:44:30 +00:00
2020-05-09 12:13:46 +00:00
### `run_install`
2020-05-10 05:00:23 +00:00
**Optional** (_default:_ `null`) If specified, run `pnpm install`.
2020-05-09 12:13:46 +00:00
2020-05-10 05:08:45 +00: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 05:14:27 +00: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 05:08:45 +00: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]`.
2020-05-08 07:44:30 +00:00
## Outputs
### `dest`
Expanded path of inputs#dest.
### `bin_dest`
2021-03-23 05:53:37 +00:00
Location of `pnpm` and `pnpx` command.
2020-05-08 07:44:30 +00:00
## Usage example
2021-03-27 11:45:01 +00:00
### Just install pnpm
2020-05-10 05:14:27 +00:00
```yaml
on:
- push
- pull_request
jobs:
2022-01-29 16:17:29 +00:00
install:
runs-on: ubuntu-latest
2020-05-10 05:14:27 +00:00
2022-01-29 16:17:29 +00:00
steps:
2022-05-28 14:21:35 +00:00
- uses: pnpm/action-setup@v2.2.2
2022-01-29 16:17:29 +00:00
with:
version: 6.0.2
2020-05-10 05:14:27 +00:00
```
2021-03-27 11:45:01 +00:00
### Install pnpm and a few npm packages
2020-05-10 05:14:27 +00:00
2020-05-08 07:44:30 +00:00
```yaml
on:
- push
- pull_request
jobs:
2022-01-29 16:17:29 +00:00
install:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
2022-05-28 14:21:35 +00:00
- uses: pnpm/action-setup@v2.2.2
2022-01-29 16:17:29 +00:00
with:
version: 6.0.2
run_install: |
- recursive: true
args: [--frozen-lockfile, --strict-peer-dependencies]
- args: [--global, gulp, prettier, typescript]
2020-05-08 07:44:30 +00:00
```
### Use cache to reduce installation time
```yaml
on:
- push
- pull_request
jobs:
2022-01-29 16:17:29 +00:00
cache-and-install:
runs-on: ubuntu-latest
2022-01-29 16:17:29 +00:00
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- uses: pnpm/action-setup@v2.0.1
name: Install pnpm
id: pnpm-install
with:
version: 7
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: |
2022-10-13 14:58:06 +00:00
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
2022-10-13 14:58:06 +00:00
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- 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.
2020-05-08 07:44:30 +00:00
## Notes
2020-05-08 07:57:48 +00:00
This action does not setup Node.js for you, use [actions/setup-node](https://github.com/actions/setup-node) yourself.
2020-05-08 07:44:30 +00:00
## License
[MIT](https://git.io/JfclH) © [Hoàng Văn Khải](https://github.com/KSXGitHub/)