2019-08-03 21:49:54 -04:00
# setup-node
2019-08-12 15:10:38 -04:00
< p align = "left" >
< a href = "https://github.com/actions/setup-node" > < img alt = "GitHub Actions status" src = "https://github.com/actions/setup-node/workflows/Main%20workflow/badge.svg" > < / a >
< / p >
2020-01-23 08:47:21 +01:00
This action sets the node environment for use in actions by:
2019-08-03 21:49:54 -04:00
- optionally downloading and caching a version of node - npm by version spec and add to PATH
- registering problem matchers for error output
# Usage
See [action.yml ](action.yml )
2020-01-23 08:47:21 +01:00
You can use any valid [SemVer ](https://semver.org/ ) range supported by the [sem-ver ](https://www.npmjs.com/package/semver#ranges ) module.
For example [`node-version: '*'` ](https://www.npmjs.com/package/semver#x-ranges-12x-1x-12- ) would satisfy the latest version.
See also the [`evaluateVersions` ](https://github.com/actions/setup-node/blob/93313caf82afbdb49b8e4790ac7f1c97c8034826/src/installer.ts#L114 ) method and its usage of [`semver.satisfies` ](https://github.com/actions/setup-node/blob/93313caf82afbdb49b8e4790ac7f1c97c8034826/src/installer.ts#L130 )
2019-08-03 21:49:54 -04:00
Basic:
```yaml
steps:
2019-10-11 10:27:02 -04:00
- uses: actions/checkout@v1
2019-08-03 21:49:54 -04:00
- uses: actions/setup-node@v1
with:
2019-08-13 16:32:09 -04:00
node-version: '10.x'
2019-08-03 21:49:54 -04:00
- run: npm install
- run: npm test
```
Matrix Testing:
```yaml
jobs:
build:
runs-on: ubuntu-16.04
strategy:
matrix:
node: [ '10', '8' ]
name: Node ${{ matrix.node }} sample
steps:
2019-09-12 15:54:53 -04:00
- uses: actions/checkout@v1
2019-08-03 21:49:54 -04:00
- name: Setup node
uses: actions/setup-node@v1
with:
2019-08-13 16:32:09 -04:00
node-version: ${{ matrix.node }}
2019-08-03 21:49:54 -04:00
- run: npm install
- run: npm test
```
2019-08-06 18:26:04 -04:00
Publish to npmjs and GPR with npm:
```yaml
steps:
2019-09-12 15:54:53 -04:00
- uses: actions/checkout@v1
2019-08-06 18:26:04 -04:00
- uses: actions/setup-node@v1
with:
2019-08-13 16:32:09 -04:00
node-version: '10.x'
2019-08-06 18:26:04 -04:00
registry-url: 'https://registry.npmjs.org'
- run: npm install
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- uses: actions/setup-node@v1
with:
registry-url: 'https://npm.pkg.github.com'
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
Publish to npmjs and GPR with yarn:
```yaml
steps:
2019-09-12 15:54:53 -04:00
- uses: actions/checkout@v1
2019-08-06 18:26:04 -04:00
- uses: actions/setup-node@v1
with:
2019-08-13 16:32:09 -04:00
node-version: '10.x'
2019-08-06 18:26:04 -04:00
registry-url: < registry url >
- run: yarn install
- run: yarn publish
env:
NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }}
- uses: actions/setup-node@v1
with:
registry-url: 'https://npm.pkg.github.com'
- run: yarn publish
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
2019-09-10 13:32:30 -04:00
Use private packages:
```yaml
steps:
2019-09-12 15:54:53 -04:00
- uses: actions/checkout@v1
2019-09-10 13:32:30 -04:00
- uses: actions/setup-node@v1
with:
node-version: '10.x'
registry-url: 'https://registry.npmjs.org'
# Skip post-install scripts here, as a malicious
# script could steal NODE_AUTH_TOKEN.
- run: npm install --ignore-scripts
env:
2019-09-10 15:39:39 -04:00
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
2019-09-27 07:31:22 -05:00
# `npm rebuild` will run all those post-install scripts for us.
2019-09-10 13:32:30 -04:00
- run: npm rebuild && npm run prepare --if-present
```
2019-08-03 21:49:54 -04: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 )