Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
setup-node/docs/advanced-usage.md
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
132 lines (119 sloc)
4.16 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Advanced usage | |
### Check latest version: | |
The `check-latest` flag defaults to `false`. When set to `false`, 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/). Use the default or set `check-latest` to `false` if you prefer stability and if you want to ensure a specific version of Node.js is always used. | |
If `check-latest` is set to `true`, the action first checks if the cached version is the latest one. If the locally cached version is not the most up-to-date, a version of Node.js will then be downloaded. Set `check-latest` to `true` it you want the most up-to-date version of Node.js to always be used. | |
> Setting `check-latest` to `true` has performance implications as downloading versions of Node is slower than using cached versions. | |
```yaml | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-node@v2 | |
with: | |
node-version: '14' | |
check-latest: true | |
- run: npm install | |
- run: npm test | |
``` | |
### Architecture: | |
You can use any of the [supported operating systems](https://docs.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners), and the compatible `architecture` can be selected using `architecture`. Values are `x86`, `x64`, `arm64`, `armv6l`, `armv7l`, `ppc64le`, `s390x` (not all of the architectures are available on all platforms). | |
When using `architecture`, `node-version` must be provided as well. | |
```yaml | |
jobs: | |
build: | |
runs-on: windows-latest | |
name: Node sample | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-node@v2 | |
with: | |
node-version: '14' | |
architecture: 'x64' # optional, x64 or x86. If not specified, x64 will be used by default | |
- run: npm install | |
- run: npm test | |
``` | |
### Multiple Operating Systems and Architectures: | |
```yaml | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
node_version: | |
- 10 | |
- 12 | |
- 14 | |
architecture: | |
- x64 | |
# an extra windows-x86 run: | |
include: | |
- os: windows-2016 | |
node_version: 12 | |
architecture: x86 | |
name: Node ${{ matrix.node_version }} - ${{ matrix.architecture }} on ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Setup node | |
uses: actions/setup-node@v2 | |
with: | |
node-version: ${{ matrix.node_version }} | |
architecture: ${{ matrix.architecture }} | |
- run: npm install | |
- run: npm test | |
``` | |
### Publish to npmjs and GPR with npm: | |
```yaml | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-node@v2 | |
with: | |
node-version: '14.x' | |
registry-url: 'https://registry.npmjs.org' | |
- run: npm install | |
- run: npm publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- uses: actions/setup-node@v2 | |
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: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-node@v2 | |
with: | |
node-version: '14.x' | |
registry-url: <registry url> | |
- run: yarn install | |
- run: yarn publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }} | |
- uses: actions/setup-node@v2 | |
with: | |
registry-url: 'https://npm.pkg.github.com' | |
- run: yarn publish | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
``` | |
### Use private packages: | |
```yaml | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-node@v2 | |
with: | |
node-version: '14.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: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
# `npm rebuild` will run all those post-install scripts for us. | |
- run: npm rebuild && npm run prepare --if-present | |
``` |