Need help with setup-node?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

actions
1.6K Stars 586 Forks MIT License 192 Commits 59 Opened issues

Description

Set up your GitHub Actions workflow with a specific version of node.js

Services available

!
?

Need anything else?

Contributors list

setup-node

build-test status versions status proxy status

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/pnpm dependencies
  • Registering problem matchers for error output
  • Configuring authentication for GPR or npm

Usage

See action.yml

Basic:

yaml
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
  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.

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/*

Caching packages dependencies

The action has a built-in functionality for caching and restoring dependencies. It uses actions/cache under hood for caching dependencies but requires less configuration settings. Supported package managers are

npm
,
yarn
,
pnpm
(v6.10+). The
cache
input is optional, and caching is turned off by default.

The action defaults to search for the dependency file (

package-lock.json
or
yarn.lock
) in the repository root, and uses its hash as a part of the cache key. Use
cache-dependency-path
for cases when multiple dependency files are used, or they are located in different subdirectories.

See the examples of using cache for

yarn
/
pnpm
and
cache-dependency-path
input in the Advanced usage guide.

Caching npm dependencies:

yaml
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
  with:
    node-version: '14'
    cache: 'npm'
- run: npm install
- run: npm test

Caching npm dependencies in monorepos:

yaml
steps:
- uses: actions/[email protected]
- uses: actions/[email protected]
  with:
    node-version: '14'
    cache: 'npm'
    cache-dependency-path: subdir/package-lock.json
- run: npm install
- run: npm test

Matrix Testing:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node: [ '12', '14', '16' ]
    name: Node ${{ matrix.node }} sample
    steps:
      - uses: actions/[email protected]
      - name: Setup node
        uses: actions/[email protected]
        with:
          node-version: ${{ matrix.node }}
      - run: npm install
      - run: npm test

Advanced usage

  1. Check latest version
  2. Using a node version file
  3. Using different architectures
  4. Caching packages dependencies
  5. Using multiple operating systems and architectures
  6. Publishing to npmjs and GPR with npm
  7. Publishing to npmjs and GPR with yarn
  8. Using private packages

License

The scripts and documentation in this project are released under the MIT License

Contributions

Contributions are welcome! See Contributor's Guide

Code of Conduct

:wave: Be nice. See our code of conduct

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.