Set up your GitHub Actions workflow with a specific version of node.js
Go to file Use this template
Dmitry Shibanov f2b87bb2c2 Squashed commit of the following:
commit 446068aff1ec25da69c5b6af6d01dd19b230b4b2
Author: Alena Sviridenko <alenasviridenko@github.com>
Date:   Tue Jun 22 17:51:35 2021 +0300

    updated headers

commit d7e254e6e9534bb627373b7e40400cc45a888815
Author: Alena Sviridenko <alenasviridenko@github.com>
Date:   Thu Jun 17 17:35:34 2021 +0300

    updated links

commit ffd9956eda8c43e846f3305bad21fa064b07280f
Author: AlyonaSviridenko <alenasviridenko@github.com>
Date:   Thu Jun 17 17:33:41 2021 +0300

    Added advanced usage

commit 1e068f031030962d380a1bae32beb806d1c6f818
Author: AlyonaSviridenko <alenasviridenko@github.com>
Date:   Thu Jun 17 15:07:42 2021 +0300

    Updated readme with caching

commit 7528c3399a9c8e0b4e63f7a079e0078af6b92d6a
Author: Maxim Lobanov <v-malob@microsoft.com>
Date:   Wed Jun 16 14:43:46 2021 +0300

    Update versions.yml
2021-06-22 18:32:22 +03:00
.github Squashed commit of the following: 2021-06-22 18:32:22 +03:00
.licenses/npm Swap to env files (#200) 2020-10-01 12:03:22 -04:00
.vscode download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
__tests__ Add node's caching implementation (#2) 2021-06-16 09:52:44 +03:00
dist remove eol in gitattributes 2021-06-17 17:20:16 +03:00
docs Squashed commit of the following: 2021-06-22 18:32:22 +03:00
externals Initial Import 2019-08-03 21:49:54 -04:00
src Add node's caching implementation (#2) 2021-06-16 09:52:44 +03:00
validate download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
.gitattributes remove eol in gitattributes 2021-06-17 17:20:16 +03:00
.gitignore download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
.licensed.yml Add `Licensed` To Help Verify Prod Licenses (#180) 2020-09-10 09:23:54 -04:00
.prettierrc.json Initial Import 2019-08-03 21:49:54 -04:00
CODEOWNERS Add CODEOWNERS 2020-12-07 16:08:14 -05:00
CONDUCT add code of conduct 2020-04-16 14:00:00 -04:00
LICENSE Initial Import 2019-08-03 21:49:54 -04:00
README.md Squashed commit of the following: 2021-06-22 18:32:22 +03:00
action.yml Add node's caching implementation (#2) 2021-06-16 09:52:44 +03:00
jest.config.js Initial Import 2019-08-03 21:49:54 -04:00
package-lock.json Add node's caching implementation (#2) 2021-06-16 09:52:44 +03:00
package.json Add node's caching implementation (#2) 2021-06-16 09:52:44 +03:00
tsconfig.json download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00

README.md

setup-node

build-test status versions status proxy status

This action provides the following functionality for GitHub Actions runners:

  • 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

Usage

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, this action will still register problem matchers and support auth features. So setting up the node environment is still a valid scenario without downloading and caching versions.

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.

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.

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: npm install
- run: npm test

Yarn caching handles both yarn versions: 1 or 2.

At the moment, only lock files in the project root are supported.

Matrix Testing:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node: [ '12', '14' ]
    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

Advanced usage

  1. Check latest version
  2. Using different architectures
  3. Using multiple operating systems and architectures
  4. Publishing to npmjs and GPR with npm
  5. Publishing to npmjs and GPR with yarn
  6. 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

👋 Be nice. See our code of conduct