2019-08-04 01:49:54 +00:00
# setup-node
2019-08-12 19:10:38 +00:00
< p align = "left" >
2020-05-19 13:57:20 +00:00
< a href = "https://github.com/actions/setup-node/actions?query=workflow%3Abuild-test" > < img alt = "build-test status" src = "https://github.com/actions/setup-node/workflows/build-test/badge.svg" > < / a > < a href = "https://github.com/actions/setup-node/actions?query=workflow%3Aversions" > < img alt = "versions status" src = "https://github.com/actions/setup-node/workflows/versions/badge.svg" > < / a > < a href = "https://github.com/actions/setup-node/actions?query=workflow%3Aproxy" > < img alt = "proxy status" src = "https://github.com/actions/setup-node/workflows/proxy/badge.svg" > < / a >
2019-08-12 19:10:38 +00:00
< / p >
2021-06-25 09:06:49 +00:00
This action provides the following functionality for GitHub Actions users:
2019-08-04 01:49:54 +00:00
2021-06-22 15:32:22 +00:00
- Optionally downloading and caching distribution of the requested Node.js version, and adding it to the PATH
- Optionally caching npm/yarn dependencies
- Registering problem matchers for error output
- Configuring authentication for GPR or npm
2019-08-04 01:49:54 +00:00
2021-06-22 15:32:22 +00:00
# Usage
2020-05-19 13:57:20 +00:00
2021-06-22 15:32:22 +00:00
See [action.yml ](action.yml )
2020-05-19 13:57:20 +00:00
2021-06-22 15:32:22 +00:00
**Basic:**
2020-05-19 13:57:20 +00:00
```yaml
steps:
- uses: actions/checkout@v2
2020-12-15 10:36:18 +00:00
- uses: actions/setup-node@v2
2020-05-19 13:57:20 +00:00
with:
2021-02-24 04:21:23 +00:00
node-version: '14'
2021-06-22 15:32:22 +00:00
- run: npm install
- run: npm test
2020-05-19 13:57:20 +00:00
```
2021-06-30 12:07:45 +00:00
The `node-version` input is optional. If not supplied, the node version from PATH will be used. However, It is recommended to always specify Node.js version and don't rely on system one.
2020-05-19 13:57:20 +00:00
2021-06-22 15:32:22 +00:00
The action will first check the local cache for a semver match. If unable to find a specific version in the cache, the action will attempt to download a version of Node.js. It will pull LTS versions from [node-versions releases ](https://github.com/actions/node-versions/releases ) and on miss or failure will fall back to the previous behavior of downloading directly from [node dist ](https://nodejs.org/dist/ ).
2020-05-19 13:57:20 +00:00
2021-06-22 15:32:22 +00:00
For information regarding locally cached versions of Node.js on GitHub hosted runners, check out [GitHub Actions Virtual Environments ](https://github.com/actions/virtual-environments ).
2019-08-04 01:49:54 +00:00
2021-06-30 12:07:45 +00:00
#### Supported version syntax
The `node-version` input supports the following syntax:
major versions: `12` , `14` , `16`
more specific versions: `10.15` , `14.2.0` , `16.3.0`
nvm lts syntax: `lts/erbium` , `lts/fermium` , `lts/*`
2021-06-22 15:32:22 +00:00
### Caching packages dependencies
The action has a built-in functionality for caching and restoring npm/yarn dependencies. Supported package managers are `npm` , `yarn` . The `cache` input is optional, and caching is turned off by default.
2019-08-04 01:49:54 +00:00
2021-06-30 12:07:45 +00:00
**Caching npm dependencies:**
2019-08-04 01:49:54 +00:00
```yaml
steps:
2020-02-06 19:52:33 +00:00
- uses: actions/checkout@v2
2020-12-15 10:36:18 +00:00
- uses: actions/setup-node@v2
2019-08-04 01:49:54 +00:00
with:
2021-02-24 04:21:23 +00:00
node-version: '14'
2021-06-22 15:32:22 +00:00
cache: 'npm'
2019-08-04 01:49:54 +00:00
- run: npm install
- run: npm test
```
2021-06-22 15:32:22 +00:00
**Caching yarn dependencies:**
2020-06-29 18:56:37 +00:00
```yaml
steps:
- uses: actions/checkout@v2
2020-12-15 10:36:18 +00:00
- uses: actions/setup-node@v2
2020-06-29 18:56:37 +00:00
with:
2021-02-24 04:21:23 +00:00
node-version: '14'
2021-06-22 15:32:22 +00:00
cache: 'yarn'
2021-06-30 07:39:46 +00:00
- run: yarn install
- run: yarn test
2020-06-29 18:56:37 +00:00
```
2021-06-22 15:32:22 +00:00
Yarn caching handles both yarn versions: 1 or 2.
2020-06-29 18:56:37 +00:00
2021-06-22 15:32:22 +00:00
> At the moment, only `lock` files in the project root are supported.
### Matrix Testing:
2019-08-04 01:49:54 +00:00
```yaml
jobs:
build:
2021-06-22 15:32:22 +00:00
runs-on: ubuntu-latest
2019-08-04 01:49:54 +00:00
strategy:
matrix:
2021-06-30 12:07:45 +00:00
node: [ '12', '14', '16' ]
2019-08-04 01:49:54 +00:00
name: Node ${{ matrix.node }} sample
steps:
2020-02-06 19:52:33 +00:00
- uses: actions/checkout@v2
2019-08-04 01:49:54 +00:00
- name: Setup node
2020-12-15 10:36:18 +00:00
uses: actions/setup-node@v2
2019-08-04 01:49:54 +00:00
with:
2019-08-13 20:32:09 +00:00
node-version: ${{ matrix.node }}
2019-08-04 01:49:54 +00:00
- run: npm install
- run: npm test
```
2021-06-22 15:32:22 +00:00
## Advanced usage
1. [Check latest version ](docs/advanced-usage.md#check-latest-version )
2. [Using different architectures ](docs/advanced-usage.md#architecture )
3. [Using multiple operating systems and architectures ](docs/advanced-usage.md#multiple-operating-systems-and-architectures )
4. [Publishing to npmjs and GPR with npm ](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-npm )
5. [Publishing to npmjs and GPR with yarn ](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-yarn )
6. [Using private packages ](docs/advanced-usage.md#use-private-packages )
2019-09-10 17:32:30 +00:00
2019-08-04 01:49:54 +00:00
# License
The scripts and documentation in this project are released under the [MIT License ](LICENSE )
# Contributions
Contributions are welcome! See [Contributor's Guide ](docs/contributors.md )
2020-04-16 22:43:02 +00:00
## Code of Conduct
:wave: Be nice. See [our code of conduct ](CONDUCT )