This action provides the following functionality for GitHub Actions users:
- 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
See action.yml
Basic:
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install
- run: npm test
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 the system one.
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 and on miss or failure will fall back to the previous behavior of downloading directly from node dist.
For information regarding locally cached versions of Node.js on GitHub hosted runners, check out GitHub Actions Virtual Environments.
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/*
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.
Caching npm dependencies:
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
cache: 'npm'
- run: npm install
- run: npm test
Caching yarn dependencies:
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
cache: 'yarn'
- run: yarn install
- run: yarn test
Yarn caching handles both yarn versions: 1 or 2.
At the moment, only
lock
files in the project root are supported.
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node: [ '12', '14', '16' ]
name: Node ${{ matrix.node }} sample
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
- run: npm install
- run: npm test
- Check latest version
- Using different architectures
- Using multiple operating systems and architectures
- Publishing to npmjs and GPR with npm
- Publishing to npmjs and GPR with yarn
- Using private packages
The scripts and documentation in this project are released under the MIT License
Contributions are welcome! See Contributor's Guide
👋 Be nice. See our code of conduct