Template
1
0
mirror of https://github.com/actions/setup-node synced 2024-11-30 21:22:29 +08:00
Set up your GitHub Actions workflow with a specific version of node.js
Go to file Use this template
MaksimZhukov a0cdab1110
Merge pull request #299 from actions/malob/adr-caching-monorepos
ADR for support caching for mono repos and repositories with complex structure
2021-08-05 10:53:54 +03:00
__tests__ Revert "Temporarily disabled cache usage for v2" 2021-08-04 17:00:35 +03:00
.github Restore YARN flag 2021-08-04 17:04:32 +03:00
.licenses/npm update dependencies 2021-06-30 13:08:07 +03:00
.vscode download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00
dist Revert "Temporarily disabled cache usage for v2" 2021-08-04 17:00:35 +03:00
docs Update 0001-support-caching-deps-for-monorepos.md 2021-07-15 13:23:09 +03:00
externals Initial Import 2019-08-03 21:49:54 -04:00
src Revert "Temporarily disabled cache usage for v2" 2021-08-04 17:00:35 +03: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 regenerate license (#7) 2021-06-29 13:34:35 +03:00
.prettierrc.json Initial Import 2019-08-03 21:49:54 -04:00
action.yml Reorder to npm, yarn, pnpm 2021-07-15 20:14:30 +01: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
jest.config.js Initial Import 2019-08-03 21:49:54 -04:00
LICENSE Initial Import 2019-08-03 21:49:54 -04:00
package-lock.json update dependencies 2021-06-30 13:08:07 +03:00
package.json Add node's caching implementation (#2) 2021-06-16 09:52:44 +03:00
README.md Reorder to npm, yarn, pnpm 2021-07-15 20:14:30 +01:00
tsconfig.json download from node-versions and fallback to node dist (#147) 2020-05-19 09:25:54 -04:00

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:

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.

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 npm/yarn dependencies. Supported package managers are npm, yarn, pnpm. 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.

Caching pnpm (v6.10+) dependencies:

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

# NOTE: pnpm caching support requires pnpm version >= 6.10.0

steps:
- uses: actions/checkout@v2
- uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2
  with:
    version: 6.10.0
- uses: actions/setup-node@v2
  with:
    node-version: '14'
    cache: 'pnpm'
- run: pnpm install
- run: pnpm test

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', '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

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