You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Maxim Lobanov e215578cb0
Merge pull request #272 from akv-platform/add-caching-for-node-dependencies
Implementation of node's caching
4 years ago
.github Merge pull request #272 from akv-platform/add-caching-for-node-dependencies 4 years ago
.licenses/npm update dependencies 4 years ago
.vscode download from node-versions and fallback to node dist (#147) 5 years ago
__tests__ Merge branch 'main' into add-caching-for-node-dependencies 4 years ago
dist update dependencies 4 years ago
docs Merge branch 'main' into add-caching-for-node-dependencies 4 years ago
externals Initial Import 6 years ago
src Merge branch 'main' into add-caching-for-node-dependencies 4 years ago
validate download from node-versions and fallback to node dist (#147) 5 years ago
.gitattributes remove eol in gitattributes 4 years ago
.gitignore download from node-versions and fallback to node dist (#147) 5 years ago
.licensed.yml regenerate license (#7) 4 years ago
.prettierrc.json Initial Import 6 years ago
CODEOWNERS Add CODEOWNERS 4 years ago
CONDUCT add code of conduct 5 years ago
LICENSE Initial Import 6 years ago
README.md fix for documentation 4 years ago
action.yml work on resolving comments 4 years ago
jest.config.js Initial Import 6 years ago
package-lock.json update dependencies 4 years ago
package.json Add node's caching implementation (#2) 4 years ago
tsconfig.json download from node-versions and fallback to node dist (#147) 5 years ago

README.md

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 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: 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.

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