2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# setup-node
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-12 15:10:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p  align = "left" >  
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:57:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < a  href = "https://github.com/actions/setup-node/actions?query=workflow%3Abuild-test" > < img  alt = "build-test status"  src = "https://github.com/actions/setup-node/workflows/build-test/badge.svg" > < / a >  < a  href = "https://github.com/actions/setup-node/actions?query=workflow%3Aversions" > < img  alt = "versions status"  src = "https://github.com/actions/setup-node/workflows/versions/badge.svg" > < / a >  < a  href = "https://github.com/actions/setup-node/actions?query=workflow%3Aproxy" > < img  alt = "proxy status"  src = "https://github.com/actions/setup-node/workflows/proxy/badge.svg" > < / a >  
							 
						 
					
						
							
								
									
										
										
										
											2019-08-12 15:10:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								This action sets by node environment for use in actions by:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  optionally downloading and caching a version of node - npm by version spec and add to PATH 
						 
					
						
							
								
									
										
										
										
											2020-05-06 09:58:52 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  registering problem matchers for error output 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  configuring authentication for GPR or npm 
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:57:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# v2-beta
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								A beta release which adds reliability for pulling node distributions from a cache of node releases is available by referencing the `v2-beta`  tag.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								steps:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  uses: actions/checkout@v2  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  uses: actions/setup-node@v2 -beta 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node-version: '12'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-20 19:50:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								It will first check the local cache for a semver match.  The hosted images have been updated with the latest of each LTS from v8, v10, v12, and v14. `self-hosted`  machines will benefit from the cache as well only downloading once.  It will pull LTS versions from `main`  branch of [node-versions ](https://github.com/actions/node-versions/blob/main/versions-manifest.json ) repository and on miss or failure, it will fall back to the previous behavior of download directly from [node dist ](https://nodejs.org/dist/ ).
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:57:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The `node-version`  input is optional.  If not supplied, node which is in your 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.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# Usage
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								See [action.yml ](action.yml )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Basic:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								steps:
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 14:52:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  uses: actions/checkout@v2  
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								-  uses: actions/setup-node@v1  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 09:58:52 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    node-version: '12'
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								-  run: npm install 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: npm test 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-06-29 21:56:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Check latest version:  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								>  In basic example, without `check-latest` flag, the action tries to resolve version from local cache firstly and download only if it is not found. Local cache on image is updated with a couple of weeks latency.  
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`check-latest`  flag forces the action to check if the cached version is the latest one. It reduces latency significantly but it is much more likely to incur version downloading. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								steps:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  uses: actions/checkout@v2  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  uses: actions/setup-node@v2  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node-version: '12'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    check-latest: true
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: npm install 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: npm test 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								Matrix Testing:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								jobs:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  build:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    runs-on: ubuntu-16.04
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    strategy:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      matrix:
							 
						 
					
						
							
								
									
										
										
										
											2020-01-31 02:12:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        node: [ '10', '12' ]
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    name: Node ${{ matrix.node }} sample
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    steps:
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 14:52:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      -  uses: actions/checkout@v2 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      -  name: Setup node
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        uses: actions/setup-node@v1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        with:
							 
						 
					
						
							
								
									
										
										
										
											2019-08-13 16:32:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          node-version: ${{ matrix.node }}
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      -  run: npm install
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      -  run: npm test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-03 07:14:10 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Architecture:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The architecture can be selected using `node-arch` . Values are `x86` , `x64` , `arm64` , `armv6l` , `armv7l` , `ppc64le` , `s390x`  (not all of the architectures are available on all platforms).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								jobs:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  build:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    runs-on: windows-latest
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    strategy:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      matrix:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        node: [ '10', '12' ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        arch: ['x86', 'x64']
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    name: Node ${{ matrix.node }} on ${{ matrix.arch }}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    steps:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      -  uses: actions/checkout@v2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      -  name: Setup node
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        uses: actions/setup-node@v1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        with:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          node-version: ${{ matrix.node }}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          node-arch: ${{ matrix.arch }}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      -  run: npm install
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      -  run: npm test
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-06 18:26:04 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Publish to npmjs and GPR with npm:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								steps:
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 14:52:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  uses: actions/checkout@v2  
						 
					
						
							
								
									
										
										
										
											2019-08-06 18:26:04 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  uses: actions/setup-node@v1  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
									
										
										
										
											2019-08-13 16:32:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    node-version: '10.x'
							 
						 
					
						
							
								
									
										
										
										
											2019-08-06 18:26:04 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    registry-url: 'https://registry.npmjs.org'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: npm install 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: npm publish 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  env:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  uses: actions/setup-node@v1  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    registry-url: 'https://npm.pkg.github.com'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: npm publish 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  env:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Publish to npmjs and GPR with yarn:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								steps:
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 14:52:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  uses: actions/checkout@v2  
						 
					
						
							
								
									
										
										
										
											2019-08-06 18:26:04 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  uses: actions/setup-node@v1  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
									
										
										
										
											2019-08-13 16:32:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    node-version: '10.x'
							 
						 
					
						
							
								
									
										
										
										
											2019-08-06 18:26:04 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    registry-url: < registry  url > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: yarn install 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: yarn publish 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  env:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  uses: actions/setup-node@v1  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    registry-url: 'https://npm.pkg.github.com'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: yarn publish 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  env:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-10 13:32:30 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Use private packages:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```yaml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								steps:
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 14:52:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  uses: actions/checkout@v2  
						 
					
						
							
								
									
										
										
										
											2019-09-10 13:32:30 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  uses: actions/setup-node@v1  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    node-version: '10.x'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    registry-url: 'https://registry.npmjs.org'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Skip post-install scripts here, as a malicious
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# script could steal NODE_AUTH_TOKEN.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  run: npm install --ignore-scripts 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  env:
							 
						 
					
						
							
								
									
										
										
										
											2019-09-10 15:39:39 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
							 
						 
					
						
							
								
									
										
										
										
											2019-09-27 07:31:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# `npm rebuild` will run all those post-install scripts for us.
  
						 
					
						
							
								
									
										
										
										
											2019-09-10 13:32:30 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  run: npm rebuild &&  npm run prepare --if-present 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 21:49:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# License
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The scripts and documentation in this project are released under the [MIT License ](LICENSE )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Contributions
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Contributions are welcome!  See [Contributor's Guide ](docs/contributors.md )
							 
						 
					
						
							
								
									
										
										
										
											2020-04-16 18:43:02 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Code of Conduct
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:wave: Be nice.  See [our code of conduct ](CONDUCT )