mirror of
				https://gitea.com/actions/setup-node.git
				synced 2025-10-31 07:47:14 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			v6.0.0
			...
			test-macos
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 746f200ccd | ||
|   | 4fcdf84cf4 | ||
|   | 7299ce5c60 | ||
|   | 1ea62dc588 | 
							
								
								
									
										2
									
								
								.github/workflows/basic-validation.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/basic-validation.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,4 +16,4 @@ jobs: | |||||||
|     name: Basic validation |     name: Basic validation | ||||||
|     uses: actions/reusable-workflows/.github/workflows/basic-validation.yml@main |     uses: actions/reusable-workflows/.github/workflows/basic-validation.yml@main | ||||||
|     with: |     with: | ||||||
|       node-version: '24.x' |       node-version: '20.x' | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,4 +16,4 @@ jobs: | |||||||
|     name: Check dist/ |     name: Check dist/ | ||||||
|     uses: actions/reusable-workflows/.github/workflows/check-dist.yml@main |     uses: actions/reusable-workflows/.github/workflows/check-dist.yml@main | ||||||
|     with: |     with: | ||||||
|       node-version: '24.x' |       node-version: '20.x' | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							| @@ -6,7 +6,7 @@ on: | |||||||
|       - '**.md' |       - '**.md' | ||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - main |       - test-macos-x64-runner | ||||||
|       - releases/* |       - releases/* | ||||||
|     paths-ignore: |     paths-ignore: | ||||||
|       - '**.md' |       - '**.md' | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
								
							| @@ -25,15 +25,15 @@ jobs: | |||||||
|     env: |     env: | ||||||
|       https_proxy: http://squid-proxy:3128 |       https_proxy: http://squid-proxy:3128 | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Clear tool cache |       - name: Clear tool cache | ||||||
|         run: rm -rf $RUNNER_TOOL_CACHE/* |         run: rm -rf $RUNNER_TOOL_CACHE/* | ||||||
|       - name: Setup node 24 |       - name: Setup node 14 | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           node-version: 24.x |           node-version: 14.x | ||||||
|       - name: Verify node and npm |       - name: Verify node and npm | ||||||
|         run: __tests__/verify-node.sh 24 |         run: __tests__/verify-node.sh 14 | ||||||
|  |  | ||||||
|   test-bypass-proxy: |   test-bypass-proxy: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
| @@ -41,12 +41,12 @@ jobs: | |||||||
|       https_proxy: http://no-such-proxy:3128 |       https_proxy: http://no-such-proxy:3128 | ||||||
|       no_proxy: api.github.com,github.com,nodejs.org,registry.npmjs.org,*.s3.amazonaws.com,s3.amazonaws.com |       no_proxy: api.github.com,github.com,nodejs.org,registry.npmjs.org,*.s3.amazonaws.com,s3.amazonaws.com | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Clear tool cache |       - name: Clear tool cache | ||||||
|         run: rm -rf $RUNNER_TOOL_CACHE/* |         run: rm -rf $RUNNER_TOOL_CACHE/* | ||||||
|       - name: Setup node 24 |       - name: Setup node 11 | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           node-version: 24 |           node-version: 11 | ||||||
|       - name: Verify node and npm |       - name: Verify node and npm | ||||||
|         run: __tests__/verify-node.sh 24 |         run: __tests__/verify-node.sh 11 | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ jobs: | |||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checking out |       - name: Checking out | ||||||
|         uses: actions/checkout@v5 |         uses: actions/checkout@v4 | ||||||
|       - name: Publish |       - name: Publish | ||||||
|         id: publish |         id: publish | ||||||
|         uses: actions/publish-immutable-action@v0.0.4 |         uses: actions/publish-immutable-action@v0.0.4 | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     steps: |     steps: | ||||||
|       - name: Update the ${{ env.TAG_NAME }} tag |       - name: Update the ${{ env.TAG_NAME }} tag | ||||||
|         uses: actions/publish-action@v0.4.0 |         uses: actions/publish-action@v0.3.0 | ||||||
|         with: |         with: | ||||||
|           source-tag: ${{ env.TAG_NAME }} |           source-tag: ${{ env.TAG_NAME }} | ||||||
|           slack-webhook: ${{ secrets.SLACK_WEBHOOK }} |           slack-webhook: ${{ secrets.SLACK_WEBHOOK }} | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							| @@ -6,7 +6,7 @@ on: | |||||||
|       - '**.md' |       - '**.md' | ||||||
|   push: |   push: | ||||||
|     branches: |     branches: | ||||||
|       - main |       - test-macos-x64-runner | ||||||
|       - releases/* |       - releases/* | ||||||
|     paths-ignore: |     paths-ignore: | ||||||
|       - '**.md' |       - '**.md' | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| --- | --- | ||||||
| name: "@types/node" | name: "@types/node" | ||||||
| version: 24.1.0 | version: 20.11.25 | ||||||
| type: npm | type: npm | ||||||
| summary: TypeScript definitions for node | summary: TypeScript definitions for node | ||||||
| homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node | homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- | --- | ||||||
| name: semver | name: semver | ||||||
| version: 7.7.2 | version: 7.6.3 | ||||||
| type: npm | type: npm | ||||||
| summary: The semantic version parser used by npm. | summary: The semantic version parser used by npm. | ||||||
| homepage: | homepage: | ||||||
							
								
								
									
										6
									
								
								.licenses/npm/undici-types.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.licenses/npm/undici-types.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,17 +1,15 @@ | |||||||
| --- | --- | ||||||
| name: undici-types | name: undici-types | ||||||
| version: 7.8.0 | version: 5.26.5 | ||||||
| type: npm | type: npm | ||||||
| summary: A stand-alone types package for Undici | summary: A stand-alone types package for Undici | ||||||
| homepage: https://undici.nodejs.org | homepage: https://undici.nodejs.org | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: Auto-generated MIT license text | ||||||
|   text: | |   text: | | ||||||
|     MIT License |     MIT License | ||||||
| 
 | 
 | ||||||
|     Copyright (c) Matteo Collina and Undici contributors |  | ||||||
| 
 |  | ||||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy |     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|     of this software and associated documentation files (the "Software"), to deal |     of this software and associated documentation files (the "Software"), to deal | ||||||
|     in the Software without restriction, including without limitation the rights |     in the Software without restriction, including without limitation the rights | ||||||
|   | |||||||
							
								
								
									
										71
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								README.md
									
									
									
									
									
								
							| @@ -12,27 +12,13 @@ This action provides the following functionality for GitHub Actions users: | |||||||
| - Registering problem matchers for error output | - Registering problem matchers for error output | ||||||
| - Configuring authentication for GPR or npm | - Configuring authentication for GPR or npm | ||||||
|  |  | ||||||
| ## Breaking changes in V6 |  | ||||||
|  |  | ||||||
| - Caching is now automatically enabled for npm projects when either the `devEngines.packageManager` field or the top-level `packageManager` field in `package.json` is set to `npm`. For other package managers, such as Yarn and pnpm, caching is disabled by default and must be configured manually using the `cache` input. |  | ||||||
|  |  | ||||||
| ## Breaking changes in V5  |  | ||||||
|  |  | ||||||
| - Enabled caching by default with package manager detection if no cache input is provided. |  | ||||||
|   > For workflows with elevated privileges or access to sensitive information, we recommend disabling automatic caching by setting `package-manager-cache: false` when caching is not needed for secure operation. |  | ||||||
|  |  | ||||||
| - Upgraded action from node20 to node24. |  | ||||||
|   > Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release. [See Release Notes](https://github.com/actions/runner/releases/tag/v2.327.1) |  | ||||||
|  |  | ||||||
| For more details, see the full release notes on the [releases page](https://github.com/actions/setup-node/releases/v5.0.0) |  | ||||||
|  |  | ||||||
| ## Usage | ## Usage | ||||||
|  |  | ||||||
| See [action.yml](action.yml) | See [action.yml](action.yml) | ||||||
|  |  | ||||||
| <!-- start usage --> | <!-- start usage --> | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     # Version Spec of the version to use in SemVer notation. |     # Version Spec of the version to use in SemVer notation. | ||||||
|     # It also admits such aliases as lts/*, latest, nightly and canary builds |     # It also admits such aliases as lts/*, latest, nightly and canary builds | ||||||
| @@ -71,11 +57,6 @@ See [action.yml](action.yml) | |||||||
|     # Default: '' |     # Default: '' | ||||||
|     cache: '' |     cache: '' | ||||||
|  |  | ||||||
|     # Controls automatic caching for npm. By default, caching for npm is enabled if either the devEngines.packageManager field or the top-level packageManager field in package.json specifies npm and no explicit cache input is provided. |  | ||||||
|     # To disable automatic caching for npm, set package-manager-cache to false. |  | ||||||
|     # default: true |  | ||||||
|     package-manager-cache: true |  | ||||||
|  |  | ||||||
|     # Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc.  |     # Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc.  | ||||||
|     # It will generate hash from the target file for primary key. It works only If cache is specified.   |     # It will generate hash from the target file for primary key. It works only If cache is specified.   | ||||||
|     # Supports wildcards or a list of file names for caching multiple dependencies. |     # Supports wildcards or a list of file names for caching multiple dependencies. | ||||||
| @@ -117,10 +98,10 @@ See [action.yml](action.yml) | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: 24 |     node-version: 18 | ||||||
| - run: npm ci | - run: npm ci | ||||||
| - run: npm test | - run: npm test | ||||||
| ``` | ``` | ||||||
| @@ -137,9 +118,9 @@ The `node-version` input supports the Semantic Versioning Specification, for mor | |||||||
|  |  | ||||||
| Examples: | Examples: | ||||||
|  |  | ||||||
|  - Major versions: `22`, `24` |  - Major versions: `18`, `20` | ||||||
|  - More specific versions: `20.19`, `22.17.1` , `24.8.0` |  - More specific versions: `10.15`, `16.15.1` , `18.4.0` | ||||||
|  - NVM LTS syntax: `lts/iron`, `lts/jod`, `lts/*`, `lts/-n` |  - NVM LTS syntax: `lts/erbium`, `lts/fermium`, `lts/*`, `lts/-n` | ||||||
|  - Latest release: `*` or `latest`/`current`/`node` |  - Latest release: `*` or `latest`/`current`/`node` | ||||||
|  |  | ||||||
| **Note:** Like the other values, `*` will get the latest [locally-cached Node.js version](https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md#nodejs), or the latest version from [actions/node-versions](https://github.com/actions/node-versions/blob/main/versions-manifest.json), depending on the [`check-latest`](docs/advanced-usage.md#check-latest-version) input. | **Note:** Like the other values, `*` will get the latest [locally-cached Node.js version](https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md#nodejs), or the latest version from [actions/node-versions](https://github.com/actions/node-versions/blob/main/versions-manifest.json), depending on the [`check-latest`](docs/advanced-usage.md#check-latest-version) input. | ||||||
| @@ -154,7 +135,7 @@ It's **always** recommended to commit the lockfile of your package manager for s | |||||||
|  |  | ||||||
| ## Caching global packages data | ## Caching global packages data | ||||||
|  |  | ||||||
| The action has a built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/cache) under the hood for caching global packages data but requires less configuration settings. Supported package managers are `npm`, `yarn`, `pnpm` (v6.10+). The `cache` input is optional. | The action has a built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/cache) under the hood for caching global packages data 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`, `npm-shrinkwrap.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. | The action defaults to search for the dependency file (`package-lock.json`, `npm-shrinkwrap.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. | ||||||
|  |  | ||||||
| @@ -166,10 +147,10 @@ See the examples of using cache for `yarn`/`pnpm` and `cache-dependency-path` in | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: 24 |     node-version: 20 | ||||||
|     cache: 'npm' |     cache: 'npm' | ||||||
| - run: npm ci | - run: npm ci | ||||||
| - run: npm test | - run: npm test | ||||||
| @@ -179,30 +160,16 @@ steps: | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: 24 |     node-version: 20 | ||||||
|     cache: 'npm' |     cache: 'npm' | ||||||
|     cache-dependency-path: subdir/package-lock.json |     cache-dependency-path: subdir/package-lock.json | ||||||
| - run: npm ci | - run: npm ci | ||||||
| - run: npm test | - run: npm test | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| Caching for npm dependencies is automatically enabled when your `package.json` contains either `devEngines.packageManager` field or top-level `packageManager` field set to `npm`, and no explicit cache input is provided. |  | ||||||
|  |  | ||||||
| This behavior is controlled by the `package-manager-cache` input, which defaults to `true`. To turn off automatic caching, set `package-manager-cache` to `false`. |  | ||||||
|  |  | ||||||
| ```yaml |  | ||||||
| steps: |  | ||||||
| - uses: actions/checkout@v5 |  | ||||||
| - uses: actions/setup-node@v6 |  | ||||||
|   with: |  | ||||||
|     package-manager-cache: false |  | ||||||
| - run: npm ci |  | ||||||
| ``` |  | ||||||
| > If your `package.json` file does not include a `packageManager` field set to `npm`, caching will be disabled unless you explicitly enable it. For workflows with elevated privileges or access to sensitive information, we recommend disabling automatic caching for npm by setting `package-manager-cache: false` when caching is not required for secure operation. |  | ||||||
|  |  | ||||||
| ## Matrix Testing | ## Matrix Testing | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| @@ -211,12 +178,12 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     strategy: |     strategy: | ||||||
|       matrix: |       matrix: | ||||||
|         node: [ 20, 22, 24 ] |         node: [ 14, 16, 18 ] | ||||||
|     name: Node ${{ matrix.node }} sample |     name: Node ${{ matrix.node }} sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Setup node |       - name: Setup node | ||||||
|         uses: actions/setup-node@v6 |         uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: ${{ matrix.node }} |           node-version: ${{ matrix.node }} | ||||||
|       - run: npm ci |       - run: npm ci | ||||||
| @@ -230,10 +197,10 @@ jobs: | |||||||
| To get a higher rate limit, you can [generate a personal access token on github.com](https://github.com/settings/tokens/new) and pass it as the `token` input for the action: | To get a higher rate limit, you can [generate a personal access token on github.com](https://github.com/settings/tokens/new) and pass it as the `token` input for the action: | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| uses: actions/setup-node@v6 | uses: actions/setup-node@v4 | ||||||
| with: | with: | ||||||
|   token: ${{ secrets.GH_DOTCOM_TOKEN }} |   token: ${{ secrets.GH_DOTCOM_TOKEN }} | ||||||
|   node-version: 24 |   node-version: 20 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| If the runner is not able to access github.com, any Nodejs versions requested during a workflow run must come from the runner's tool cache. See "[Setting up the tool cache on self-hosted runners without internet access](https://docs.github.com/en/enterprise-server@3.2/admin/github-actions/managing-access-to-actions-from-githubcom/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access)" for more information. | If the runner is not able to access github.com, any Nodejs versions requested during a workflow run must come from the runner's tool cache. See "[Setting up the tool cache on self-hosted runners without internet access](https://docs.github.com/en/enterprise-server@3.2/admin/github-actions/managing-access-to-actions-from-githubcom/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access)" for more information. | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| v24 | v20 | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| nodejs 24.0.0 | nodejs 20.0.0 | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| node 24.0.0 | node 20.0.0 | ||||||
|   | |||||||
| @@ -3,6 +3,6 @@ | |||||||
|     "node": "^14.0.0" |     "node": "^14.0.0" | ||||||
|   }, |   }, | ||||||
|   "volta": { |   "volta": { | ||||||
|     "node": "24.0.0" |     "node": "20.0.0" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| { | { | ||||||
|   "engines": { |   "engines": { | ||||||
|     "node": "^24.0.0" |     "node": "^20.0.0" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -20,7 +20,6 @@ describe('main tests', () => { | |||||||
|  |  | ||||||
|   let infoSpy: jest.SpyInstance; |   let infoSpy: jest.SpyInstance; | ||||||
|   let warningSpy: jest.SpyInstance; |   let warningSpy: jest.SpyInstance; | ||||||
|   let saveStateSpy: jest.SpyInstance; |  | ||||||
|   let inSpy: jest.SpyInstance; |   let inSpy: jest.SpyInstance; | ||||||
|   let setOutputSpy: jest.SpyInstance; |   let setOutputSpy: jest.SpyInstance; | ||||||
|   let startGroupSpy: jest.SpyInstance; |   let startGroupSpy: jest.SpyInstance; | ||||||
| @@ -54,8 +53,6 @@ describe('main tests', () => { | |||||||
|     setOutputSpy.mockImplementation(() => {}); |     setOutputSpy.mockImplementation(() => {}); | ||||||
|     warningSpy = jest.spyOn(core, 'warning'); |     warningSpy = jest.spyOn(core, 'warning'); | ||||||
|     warningSpy.mockImplementation(() => {}); |     warningSpy.mockImplementation(() => {}); | ||||||
|     saveStateSpy = jest.spyOn(core, 'saveState'); |  | ||||||
|     saveStateSpy.mockImplementation(() => {}); |  | ||||||
|     startGroupSpy = jest.spyOn(core, 'startGroup'); |     startGroupSpy = jest.spyOn(core, 'startGroup'); | ||||||
|     startGroupSpy.mockImplementation(() => {}); |     startGroupSpy.mockImplementation(() => {}); | ||||||
|     endGroupSpy = jest.spyOn(core, 'endGroup'); |     endGroupSpy = jest.spyOn(core, 'endGroup'); | ||||||
| @@ -283,149 +280,4 @@ describe('main tests', () => { | |||||||
|       ); |       ); | ||||||
|     }); |     }); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   describe('cache feature tests', () => { |  | ||||||
|     it('Should enable caching when packageManager is npm and cache input is not provided', async () => { |  | ||||||
|       inputs['package-manager-cache'] = 'true'; |  | ||||||
|       inputs['cache'] = ''; |  | ||||||
|       isCacheActionAvailable.mockImplementation(() => true); |  | ||||||
|  |  | ||||||
|       inSpy.mockImplementation(name => inputs[name]); |  | ||||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); |  | ||||||
|       readFileSpy.mockImplementation(() => |  | ||||||
|         JSON.stringify({ |  | ||||||
|           packageManager: 'npm@10.8.2' |  | ||||||
|         }) |  | ||||||
|       ); |  | ||||||
|  |  | ||||||
|       await main.run(); |  | ||||||
|  |  | ||||||
|       expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm'); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     it('Should enable caching when devEngines.packageManager.name is "npm" and cache input is not provided', async () => { |  | ||||||
|       inputs['package-manager-cache'] = 'true'; |  | ||||||
|       inputs['cache'] = ''; |  | ||||||
|       isCacheActionAvailable.mockImplementation(() => true); |  | ||||||
|  |  | ||||||
|       inSpy.mockImplementation(name => inputs[name]); |  | ||||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); |  | ||||||
|       readFileSpy.mockImplementation(() => |  | ||||||
|         JSON.stringify({ |  | ||||||
|           devEngines: { |  | ||||||
|             packageManager: {name: 'npm'} |  | ||||||
|           } |  | ||||||
|         }) |  | ||||||
|       ); |  | ||||||
|  |  | ||||||
|       await main.run(); |  | ||||||
|  |  | ||||||
|       expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm'); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     it('Should enable caching when devEngines.packageManager is array and one entry has name "npm"', async () => { |  | ||||||
|       inputs['package-manager-cache'] = 'true'; |  | ||||||
|       inputs['cache'] = ''; |  | ||||||
|       isCacheActionAvailable.mockImplementation(() => true); |  | ||||||
|  |  | ||||||
|       inSpy.mockImplementation(name => inputs[name]); |  | ||||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); |  | ||||||
|       readFileSpy.mockImplementation(() => |  | ||||||
|         JSON.stringify({ |  | ||||||
|           devEngines: { |  | ||||||
|             packageManager: [{name: 'pnpm'}, {name: 'npm'}] |  | ||||||
|           } |  | ||||||
|         }) |  | ||||||
|       ); |  | ||||||
|  |  | ||||||
|       await main.run(); |  | ||||||
|  |  | ||||||
|       expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm'); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     it('Should not enable caching if packageManager is "pnpm@8.0.0" and cache input is not provided', async () => { |  | ||||||
|       inputs['package-manager-cache'] = 'true'; |  | ||||||
|       inputs['cache'] = ''; |  | ||||||
|       inSpy.mockImplementation(name => inputs[name]); |  | ||||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); |  | ||||||
|       readFileSpy.mockImplementation(() => |  | ||||||
|         JSON.stringify({ |  | ||||||
|           packageManager: 'pnpm@8.0.0' |  | ||||||
|         }) |  | ||||||
|       ); |  | ||||||
|  |  | ||||||
|       await main.run(); |  | ||||||
|  |  | ||||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     it('Should not enable caching if devEngines.packageManager.name is "pnpm"', async () => { |  | ||||||
|       inputs['package-manager-cache'] = 'true'; |  | ||||||
|       inputs['cache'] = ''; |  | ||||||
|       inSpy.mockImplementation(name => inputs[name]); |  | ||||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); |  | ||||||
|       readFileSpy.mockImplementation(() => |  | ||||||
|         JSON.stringify({ |  | ||||||
|           devEngines: { |  | ||||||
|             packageManager: {name: 'pnpm'} |  | ||||||
|           } |  | ||||||
|         }) |  | ||||||
|       ); |  | ||||||
|  |  | ||||||
|       await main.run(); |  | ||||||
|  |  | ||||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     it('Should not enable caching if devEngines.packageManager is array without "npm"', async () => { |  | ||||||
|       inputs['package-manager-cache'] = 'true'; |  | ||||||
|       inputs['cache'] = ''; |  | ||||||
|       inSpy.mockImplementation(name => inputs[name]); |  | ||||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); |  | ||||||
|       readFileSpy.mockImplementation(() => |  | ||||||
|         JSON.stringify({ |  | ||||||
|           devEngines: { |  | ||||||
|             packageManager: [{name: 'pnpm'}, {name: 'yarn'}] |  | ||||||
|           } |  | ||||||
|         }) |  | ||||||
|       ); |  | ||||||
|  |  | ||||||
|       await main.run(); |  | ||||||
|  |  | ||||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     it('Should not enable caching if packageManager field is missing in package.json and cache input is not provided', async () => { |  | ||||||
|       inputs['package-manager-cache'] = 'true'; |  | ||||||
|       inputs['cache'] = ''; |  | ||||||
|       inSpy.mockImplementation(name => inputs[name]); |  | ||||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); |  | ||||||
|       readFileSpy.mockImplementation(() => |  | ||||||
|         JSON.stringify({ |  | ||||||
|           // packageManager field is not present |  | ||||||
|         }) |  | ||||||
|       ); |  | ||||||
|  |  | ||||||
|       await main.run(); |  | ||||||
|  |  | ||||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     it('Should skip caching when package-manager-cache is false', async () => { |  | ||||||
|       inputs['package-manager-cache'] = 'false'; |  | ||||||
|       inputs['cache'] = ''; |  | ||||||
|       inSpy.mockImplementation(name => inputs[name]); |  | ||||||
|       await main.run(); |  | ||||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     it('Should enable caching with cache input explicitly provided', async () => { |  | ||||||
|       inputs['package-manager-cache'] = 'true'; |  | ||||||
|       inputs['cache'] = 'npm'; |  | ||||||
|       inSpy.mockImplementation(name => inputs[name]); |  | ||||||
|       isCacheActionAvailable.mockImplementation(() => true); |  | ||||||
|       await main.run(); |  | ||||||
|       expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm'); |  | ||||||
|     }); |  | ||||||
|   }); |  | ||||||
| }); | }); | ||||||
|   | |||||||
| @@ -7,13 +7,8 @@ fi | |||||||
|  |  | ||||||
| node_version="$(node --version)" | node_version="$(node --version)" | ||||||
| echo "Found node version '$node_version'" | echo "Found node version '$node_version'" | ||||||
|  | if [ -z "$(echo $node_version | grep --fixed-strings v$1)" ]; then | ||||||
| # Extract the major version from the node version (remove the 'v' prefix) |   echo "Unexpected version" | ||||||
| actual_major_version=$(echo $node_version | sed -E 's/^v([0-9]+)\..*/\1/') |  | ||||||
| expected_major_version=$(echo $1 | sed -E 's/^([0-9]+)\..*/\1/') # Extract major version from argument |  | ||||||
|  |  | ||||||
| if [ "$actual_major_version" != "$expected_major_version" ]; then |  | ||||||
|   echo "Expected Node.js $expected_major_version.x.x but found $node_version" |  | ||||||
|   exit 1 |   exit 1 | ||||||
| fi | fi | ||||||
|  |  | ||||||
|   | |||||||
| @@ -23,9 +23,6 @@ inputs: | |||||||
|     default: ${{ github.server_url == 'https://github.com' && github.token || '' }} |     default: ${{ github.server_url == 'https://github.com' && github.token || '' }} | ||||||
|   cache: |   cache: | ||||||
|     description: 'Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm.' |     description: 'Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm.' | ||||||
|   package-manager-cache: |  | ||||||
|     description: 'Set to false to disable automatic caching. By default, caching is enabled when either devEngines.packageManager or the top-level packageManager field in package.json specifies npm as the package manager.' |  | ||||||
|     default: true |  | ||||||
|   cache-dependency-path: |   cache-dependency-path: | ||||||
|     description: 'Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies.' |     description: 'Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies.' | ||||||
|   mirror: |   mirror: | ||||||
| @@ -40,7 +37,7 @@ outputs: | |||||||
|   node-version: |   node-version: | ||||||
|     description: 'The installed node version.' |     description: 'The installed node version.' | ||||||
| runs: | runs: | ||||||
|   using: 'node24' |   using: 'node20' | ||||||
|   main: 'dist/setup/index.js' |   main: 'dist/setup/index.js' | ||||||
|   post: 'dist/cache-save/index.js' |   post: 'dist/cache-save/index.js' | ||||||
|   post-if: success() |   post-if: success() | ||||||
|   | |||||||
							
								
								
									
										1350
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1350
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										4730
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4730
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -45,10 +45,10 @@ If `check-latest` is set to `true`, the action first checks if the cached versio | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24' |     node-version: '16' | ||||||
|     check-latest: true |     check-latest: true | ||||||
| - run: npm ci | - run: npm ci | ||||||
| - run: npm test | - run: npm test | ||||||
| @@ -63,8 +63,8 @@ See [supported version syntax](https://github.com/actions/setup-node#supported-v | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version-file: '.nvmrc' |     node-version-file: '.nvmrc' | ||||||
| - run: npm ci | - run: npm ci | ||||||
| @@ -97,10 +97,10 @@ jobs: | |||||||
|     runs-on: windows-latest |     runs-on: windows-latest | ||||||
|     name: Node sample |     name: Node sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - uses: actions/setup-node@v6 |       - uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: '24' |           node-version: '14' | ||||||
|           architecture: 'x64' # optional, x64 or x86. If not specified, x64 will be used by default |           architecture: 'x64' # optional, x64 or x86. If not specified, x64 will be used by default | ||||||
|       - run: npm ci |       - run: npm ci | ||||||
|       - run: npm test |       - run: npm test | ||||||
| @@ -118,10 +118,10 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     name: Node sample |     name: Node sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - uses: actions/setup-node@v6 |       - uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: '24.0.0-v8-canary' # it will install the latest v8 canary release for node 24.0.0 |           node-version: '20.0.0-v8-canary' # it will install the latest v8 canary release for node 20.0.0 | ||||||
|       - run: npm ci |       - run: npm ci | ||||||
|       - run: npm test |       - run: npm test | ||||||
| ``` | ``` | ||||||
| @@ -133,10 +133,10 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     name: Node sample |     name: Node sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - uses: actions/setup-node@v6 |       - uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: '24-v8-canary' # it will install the latest v8 canary release for node 24 |           node-version: '20-v8-canary' # it will install the latest v8 canary release for node 20 | ||||||
|       - run: npm ci |       - run: npm ci | ||||||
|       - run: npm test |       - run: npm test | ||||||
| ``` | ``` | ||||||
| @@ -149,10 +149,10 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     name: Node sample |     name: Node sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - uses: actions/setup-node@v6 |       - uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: 'v24.0.0-v8-canary2025030537242e55ac' |           node-version: 'v20.1.1-v8-canary20221103f7e2421e91' | ||||||
|       - run: npm ci |       - run: npm ci | ||||||
|       - run: npm test |       - run: npm test | ||||||
| ``` | ``` | ||||||
| @@ -169,10 +169,10 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     name: Node sample |     name: Node sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - uses: actions/setup-node@v6 |       - uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: '24-nightly' # it will install the latest nightly release for node 24 |           node-version: '16-nightly' # it will install the latest nightly release for node 16 | ||||||
|       - run: npm ci |       - run: npm ci | ||||||
|       - run: npm test |       - run: npm test | ||||||
| ``` | ``` | ||||||
| @@ -185,10 +185,10 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     name: Node sample |     name: Node sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - uses: actions/setup-node@v6 |       - uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: '24.0.0-nightly' # it will install the latest nightly release for node 24.0.0 |           node-version: '16.0.0-nightly' # it will install the latest nightly release for node 16.0.0 | ||||||
|       - run: npm ci |       - run: npm ci | ||||||
|       - run: npm test |       - run: npm test | ||||||
| ``` | ``` | ||||||
| @@ -201,10 +201,10 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     name: Node sample |     name: Node sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - uses: actions/setup-node@v6 |       - uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: '24.0.0-nightly202505066102159fa1' |           node-version: '16.0.0-nightly20210420a0261d231c' | ||||||
|       - run: npm ci |       - run: npm ci | ||||||
|       - run: npm test |       - run: npm test | ||||||
| ``` | ``` | ||||||
| @@ -219,28 +219,27 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     name: Node sample |     name: Node sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - uses: actions/setup-node@v6 |       - uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: '24.0.0-rc.4' |           node-version: '16.0.0-rc.1' | ||||||
|       - run: npm ci |       - run: npm ci | ||||||
|       - run: npm test |       - run: npm test | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| **Note:** Unlike nightly versions, which support version range specifiers, you must specify the exact version for a release candidate: `24.0.0-rc.4`. | **Note:** Unlike nightly versions, which support version range specifiers, you must specify the exact version for a release candidate: `16.0.0-rc.1`. | ||||||
|  |  | ||||||
| ## Caching packages data | ## Caching packages data | ||||||
| The action follows [actions/cache](https://github.com/actions/cache/blob/main/examples.md#node---npm) guidelines, and caches global cache on the machine instead of `node_modules`, so cache can be reused between different Node.js versions. | The action follows [actions/cache](https://github.com/actions/cache/blob/main/examples.md#node---npm) guidelines, and caches global cache on the machine instead of `node_modules`, so cache can be reused between different Node.js versions. | ||||||
|  |  | ||||||
| **Caching yarn dependencies:** | **Caching yarn dependencies:** | ||||||
| Yarn caching handles both Yarn Classic (v1) and Yarn Berry (v2, v3, v4+). | Yarn caching handles both yarn versions: 1 or 2. | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24' |     node-version: '14' | ||||||
|     cache: 'yarn' |     cache: 'yarn' | ||||||
| - run: yarn install --frozen-lockfile # optional, --immutable | - run: yarn install --frozen-lockfile # optional, --immutable | ||||||
| - run: yarn test | - run: yarn test | ||||||
| @@ -256,13 +255,13 @@ steps: | |||||||
| # NOTE: pnpm caching support requires pnpm version >= 6.10.0 | # NOTE: pnpm caching support requires pnpm version >= 6.10.0 | ||||||
|  |  | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: pnpm/action-setup@v4 | - uses: pnpm/action-setup@v2 | ||||||
|   with: |   with: | ||||||
|     version: 10 |     version: 6.32.9 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24' |     node-version: '14' | ||||||
|     cache: 'pnpm' |     cache: 'pnpm' | ||||||
| - run: pnpm install | - run: pnpm install | ||||||
| - run: pnpm test | - run: pnpm test | ||||||
| @@ -275,10 +274,10 @@ steps: | |||||||
| **Using wildcard patterns to cache dependencies** | **Using wildcard patterns to cache dependencies** | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24' |     node-version: '14' | ||||||
|     cache: 'npm' |     cache: 'npm' | ||||||
|     cache-dependency-path: '**/package-lock.json' |     cache-dependency-path: '**/package-lock.json' | ||||||
| - run: npm ci | - run: npm ci | ||||||
| @@ -288,10 +287,10 @@ steps: | |||||||
| **Using a list of file paths to cache dependencies** | **Using a list of file paths to cache dependencies** | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24' |     node-version: '14' | ||||||
|     cache: 'npm' |     cache: 'npm' | ||||||
|     cache-dependency-path: | |     cache-dependency-path: | | ||||||
|       server/app/package-lock.json |       server/app/package-lock.json | ||||||
| @@ -313,21 +312,21 @@ jobs: | |||||||
|           - macos-latest |           - macos-latest | ||||||
|           - windows-latest |           - windows-latest | ||||||
|         node_version: |         node_version: | ||||||
|           - 20 |           - 12 | ||||||
|           - 22 |           - 14 | ||||||
|           - 24 |           - 16 | ||||||
|         architecture: |         architecture: | ||||||
|           - x64 |           - x64 | ||||||
|         # an extra windows-x86 run: |         # an extra windows-x86 run: | ||||||
|         include: |         include: | ||||||
|           - os: windows-latest |           - os: windows-2016 | ||||||
|             node_version: 24 |             node_version: 12 | ||||||
|             architecture: x86 |             architecture: x86 | ||||||
|     name: Node ${{ matrix.node_version }} - ${{ matrix.architecture }} on ${{ matrix.os }} |     name: Node ${{ matrix.node_version }} - ${{ matrix.architecture }} on ${{ matrix.os }} | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Setup node |       - name: Setup node | ||||||
|         uses: actions/setup-node@v6 |         uses: actions/setup-node@v4 | ||||||
|         with: |         with: | ||||||
|           node-version: ${{ matrix.node_version }} |           node-version: ${{ matrix.node_version }} | ||||||
|           architecture: ${{ matrix.architecture }} |           architecture: ${{ matrix.architecture }} | ||||||
| @@ -338,16 +337,16 @@ jobs: | |||||||
| ## Publish to npmjs and GPR with npm | ## Publish to npmjs and GPR with npm | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24.x' |     node-version: '14.x' | ||||||
|     registry-url: 'https://registry.npmjs.org' |     registry-url: 'https://registry.npmjs.org' | ||||||
| - run: npm ci | - run: npm ci | ||||||
| - run: npm publish | - run: npm publish | ||||||
|   env: |   env: | ||||||
|     NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |     NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     registry-url: 'https://npm.pkg.github.com' |     registry-url: 'https://npm.pkg.github.com' | ||||||
| - run: npm publish | - run: npm publish | ||||||
| @@ -358,16 +357,16 @@ steps: | |||||||
| ## Publish to npmjs and GPR with yarn | ## Publish to npmjs and GPR with yarn | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24.x' |     node-version: '14.x' | ||||||
|     registry-url: <registry url> |     registry-url: <registry url> | ||||||
| - run: yarn install --frozen-lockfile | - run: yarn install --frozen-lockfile | ||||||
| - run: yarn publish | - run: yarn publish | ||||||
|   env: |   env: | ||||||
|     NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }} |     NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }} | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     registry-url: 'https://npm.pkg.github.com' |     registry-url: 'https://npm.pkg.github.com' | ||||||
| - run: yarn publish | - run: yarn publish | ||||||
| @@ -378,10 +377,10 @@ steps: | |||||||
| ## Use private packages | ## Use private packages | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24.x' |     node-version: '14.x' | ||||||
|     registry-url: 'https://registry.npmjs.org' |     registry-url: 'https://registry.npmjs.org' | ||||||
| # Skip post-install scripts here, as a malicious | # Skip post-install scripts here, as a malicious | ||||||
| # script could steal NODE_AUTH_TOKEN. | # script could steal NODE_AUTH_TOKEN. | ||||||
| @@ -398,10 +397,10 @@ Below you can find a sample "Setup .yarnrc.yml" step, that is going to allow you | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v5 | - uses: actions/checkout@v4 | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24.x' |     node-version: '14.x' | ||||||
| - name: Setup .yarnrc.yml | - name: Setup .yarnrc.yml | ||||||
|   run: | |   run: | | ||||||
|     yarn config set npmScopes.my-org.npmRegistryServer "https://npm.pkg.github.com" |     yarn config set npmScopes.my-org.npmRegistryServer "https://npm.pkg.github.com" | ||||||
| @@ -428,9 +427,9 @@ It is possible to specify a token to authenticate with the mirror using the `mir | |||||||
| The token will be passed as a bearer token in the `Authorization` header. | The token will be passed as a bearer token in the `Authorization` header. | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/setup-node@v6 | - uses: actions/setup-node@v4 | ||||||
|   with: |   with: | ||||||
|     node-version: '24.x' |     node-version: '14.x' | ||||||
|     mirror: 'https://nodejs.org/dist' |     mirror: 'https://nodejs.org/dist' | ||||||
|     mirror-token: 'your-mirror-token' |     mirror-token: 'your-mirror-token' | ||||||
| ``` | ``` | ||||||
|   | |||||||
							
								
								
									
										157
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										157
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -1,12 +1,12 @@ | |||||||
| { | { | ||||||
|   "name": "setup-node", |   "name": "setup-node", | ||||||
|   "version": "6.0.0", |   "version": "4.0.0", | ||||||
|   "lockfileVersion": 3, |   "lockfileVersion": 3, | ||||||
|   "requires": true, |   "requires": true, | ||||||
|   "packages": { |   "packages": { | ||||||
|     "": { |     "": { | ||||||
|       "name": "setup-node", |       "name": "setup-node", | ||||||
|       "version": "6.0.0", |       "version": "4.0.0", | ||||||
|       "license": "MIT", |       "license": "MIT", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "@actions/cache": "^4.0.3", |         "@actions/cache": "^4.0.3", | ||||||
| @@ -22,7 +22,7 @@ | |||||||
|       }, |       }, | ||||||
|       "devDependencies": { |       "devDependencies": { | ||||||
|         "@types/jest": "^29.5.14", |         "@types/jest": "^29.5.14", | ||||||
|         "@types/node": "^24.1.0", |         "@types/node": "^20.11.25", | ||||||
|         "@types/semver": "^7.5.8", |         "@types/semver": "^7.5.8", | ||||||
|         "@typescript-eslint/eslint-plugin": "^5.54.0", |         "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||||
|         "@typescript-eslint/parser": "^5.54.0", |         "@typescript-eslint/parser": "^5.54.0", | ||||||
| @@ -34,12 +34,9 @@ | |||||||
|         "jest": "^29.7.0", |         "jest": "^29.7.0", | ||||||
|         "jest-circus": "^29.7.0", |         "jest-circus": "^29.7.0", | ||||||
|         "jest-each": "^29.7.0", |         "jest-each": "^29.7.0", | ||||||
|         "prettier": "^3.6.2", |         "prettier": "^2.8.4", | ||||||
|         "ts-jest": "^29.4.1", |         "ts-jest": "^29.1.2", | ||||||
|         "typescript": "^5.4.2" |         "typescript": "^5.4.2" | ||||||
|       }, |  | ||||||
|       "engines": { |  | ||||||
|         "node": ">=24.0.0" |  | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/@aashutoshrathi/word-wrap": { |     "node_modules/@aashutoshrathi/word-wrap": { | ||||||
| @@ -1783,12 +1780,11 @@ | |||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "node_modules/@types/node": { |     "node_modules/@types/node": { | ||||||
|       "version": "24.1.0", |       "version": "20.11.25", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", |       "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", | ||||||
|       "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", |       "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", | ||||||
|       "license": "MIT", |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "undici-types": "~7.8.0" |         "undici-types": "~5.26.4" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/@types/node-fetch": { |     "node_modules/@types/node-fetch": { | ||||||
| @@ -3504,28 +3500,6 @@ | |||||||
|       "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", |       "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "node_modules/handlebars": { |  | ||||||
|       "version": "4.7.8", |  | ||||||
|       "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", |  | ||||||
|       "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", |  | ||||||
|       "dev": true, |  | ||||||
|       "license": "MIT", |  | ||||||
|       "dependencies": { |  | ||||||
|         "minimist": "^1.2.5", |  | ||||||
|         "neo-async": "^2.6.2", |  | ||||||
|         "source-map": "^0.6.1", |  | ||||||
|         "wordwrap": "^1.0.0" |  | ||||||
|       }, |  | ||||||
|       "bin": { |  | ||||||
|         "handlebars": "bin/handlebars" |  | ||||||
|       }, |  | ||||||
|       "engines": { |  | ||||||
|         "node": ">=0.4.7" |  | ||||||
|       }, |  | ||||||
|       "optionalDependencies": { |  | ||||||
|         "uglify-js": "^3.1.4" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/has-flag": { |     "node_modules/has-flag": { | ||||||
|       "version": "4.0.0", |       "version": "4.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", |       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", | ||||||
| @@ -4623,16 +4597,6 @@ | |||||||
|         "node": "*" |         "node": "*" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/minimist": { |  | ||||||
|       "version": "1.2.8", |  | ||||||
|       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", |  | ||||||
|       "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", |  | ||||||
|       "dev": true, |  | ||||||
|       "license": "MIT", |  | ||||||
|       "funding": { |  | ||||||
|         "url": "https://github.com/sponsors/ljharb" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/ms": { |     "node_modules/ms": { | ||||||
|       "version": "2.1.2", |       "version": "2.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||||||
| @@ -4651,13 +4615,6 @@ | |||||||
|       "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", |       "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "node_modules/neo-async": { |  | ||||||
|       "version": "2.6.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", |  | ||||||
|       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", |  | ||||||
|       "dev": true, |  | ||||||
|       "license": "MIT" |  | ||||||
|     }, |  | ||||||
|     "node_modules/node-fetch": { |     "node_modules/node-fetch": { | ||||||
|       "version": "2.7.0", |       "version": "2.7.0", | ||||||
|       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", |       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | ||||||
| @@ -4962,16 +4919,15 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/prettier": { |     "node_modules/prettier": { | ||||||
|       "version": "3.6.2", |       "version": "2.8.8", | ||||||
|       "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", |       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", | ||||||
|       "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", |       "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "license": "MIT", |  | ||||||
|       "bin": { |       "bin": { | ||||||
|         "prettier": "bin/prettier.cjs" |         "prettier": "bin-prettier.js" | ||||||
|       }, |       }, | ||||||
|       "engines": { |       "engines": { | ||||||
|         "node": ">=14" |         "node": ">=10.13.0" | ||||||
|       }, |       }, | ||||||
|       "funding": { |       "funding": { | ||||||
|         "url": "https://github.com/prettier/prettier?sponsor=1" |         "url": "https://github.com/prettier/prettier?sponsor=1" | ||||||
| @@ -5225,9 +5181,9 @@ | |||||||
|       "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" |       "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" | ||||||
|     }, |     }, | ||||||
|     "node_modules/semver": { |     "node_modules/semver": { | ||||||
|       "version": "7.7.2", |       "version": "7.6.3", | ||||||
|       "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", |       "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", | ||||||
|       "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", |       "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", | ||||||
|       "license": "ISC", |       "license": "ISC", | ||||||
|       "bin": { |       "bin": { | ||||||
|         "semver": "bin/semver.js" |         "semver": "bin/semver.js" | ||||||
| @@ -5461,44 +5417,37 @@ | |||||||
|       "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" |       "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" | ||||||
|     }, |     }, | ||||||
|     "node_modules/ts-jest": { |     "node_modules/ts-jest": { | ||||||
|       "version": "29.4.1", |       "version": "29.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.1.tgz", |       "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", | ||||||
|       "integrity": "sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw==", |       "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "license": "MIT", |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "bs-logger": "^0.2.6", |         "bs-logger": "0.x", | ||||||
|         "fast-json-stable-stringify": "^2.1.0", |         "fast-json-stable-stringify": "2.x", | ||||||
|         "handlebars": "^4.7.8", |         "jest-util": "^29.0.0", | ||||||
|         "json5": "^2.2.3", |         "json5": "^2.2.3", | ||||||
|         "lodash.memoize": "^4.1.2", |         "lodash.memoize": "4.x", | ||||||
|         "make-error": "^1.3.6", |         "make-error": "1.x", | ||||||
|         "semver": "^7.7.2", |         "semver": "^7.5.3", | ||||||
|         "type-fest": "^4.41.0", |         "yargs-parser": "^21.0.1" | ||||||
|         "yargs-parser": "^21.1.1" |  | ||||||
|       }, |       }, | ||||||
|       "bin": { |       "bin": { | ||||||
|         "ts-jest": "cli.js" |         "ts-jest": "cli.js" | ||||||
|       }, |       }, | ||||||
|       "engines": { |       "engines": { | ||||||
|         "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" |         "node": "^16.10.0 || ^18.0.0 || >=20.0.0" | ||||||
|       }, |       }, | ||||||
|       "peerDependencies": { |       "peerDependencies": { | ||||||
|         "@babel/core": ">=7.0.0-beta.0 <8", |         "@babel/core": ">=7.0.0-beta.0 <8", | ||||||
|         "@jest/transform": "^29.0.0 || ^30.0.0", |         "@jest/types": "^29.0.0", | ||||||
|         "@jest/types": "^29.0.0 || ^30.0.0", |         "babel-jest": "^29.0.0", | ||||||
|         "babel-jest": "^29.0.0 || ^30.0.0", |         "jest": "^29.0.0", | ||||||
|         "jest": "^29.0.0 || ^30.0.0", |  | ||||||
|         "jest-util": "^29.0.0 || ^30.0.0", |  | ||||||
|         "typescript": ">=4.3 <6" |         "typescript": ">=4.3 <6" | ||||||
|       }, |       }, | ||||||
|       "peerDependenciesMeta": { |       "peerDependenciesMeta": { | ||||||
|         "@babel/core": { |         "@babel/core": { | ||||||
|           "optional": true |           "optional": true | ||||||
|         }, |         }, | ||||||
|         "@jest/transform": { |  | ||||||
|           "optional": true |  | ||||||
|         }, |  | ||||||
|         "@jest/types": { |         "@jest/types": { | ||||||
|           "optional": true |           "optional": true | ||||||
|         }, |         }, | ||||||
| @@ -5507,25 +5456,9 @@ | |||||||
|         }, |         }, | ||||||
|         "esbuild": { |         "esbuild": { | ||||||
|           "optional": true |           "optional": true | ||||||
|         }, |  | ||||||
|         "jest-util": { |  | ||||||
|           "optional": true |  | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/ts-jest/node_modules/type-fest": { |  | ||||||
|       "version": "4.41.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", |  | ||||||
|       "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", |  | ||||||
|       "dev": true, |  | ||||||
|       "license": "(MIT OR CC0-1.0)", |  | ||||||
|       "engines": { |  | ||||||
|         "node": ">=16" |  | ||||||
|       }, |  | ||||||
|       "funding": { |  | ||||||
|         "url": "https://github.com/sponsors/sindresorhus" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/tslib": { |     "node_modules/tslib": { | ||||||
|       "version": "2.6.2", |       "version": "2.6.2", | ||||||
|       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", |       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", | ||||||
| @@ -5606,20 +5539,6 @@ | |||||||
|         "node": ">=14.17" |         "node": ">=14.17" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/uglify-js": { |  | ||||||
|       "version": "3.19.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", |  | ||||||
|       "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", |  | ||||||
|       "dev": true, |  | ||||||
|       "license": "BSD-2-Clause", |  | ||||||
|       "optional": true, |  | ||||||
|       "bin": { |  | ||||||
|         "uglifyjs": "bin/uglifyjs" |  | ||||||
|       }, |  | ||||||
|       "engines": { |  | ||||||
|         "node": ">=0.8.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/undici": { |     "node_modules/undici": { | ||||||
|       "version": "5.29.0", |       "version": "5.29.0", | ||||||
|       "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", |       "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", | ||||||
| @@ -5633,10 +5552,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/undici-types": { |     "node_modules/undici-types": { | ||||||
|       "version": "7.8.0", |       "version": "5.26.5", | ||||||
|       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", |       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", | ||||||
|       "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", |       "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" | ||||||
|       "license": "MIT" |  | ||||||
|     }, |     }, | ||||||
|     "node_modules/universal-user-agent": { |     "node_modules/universal-user-agent": { | ||||||
|       "version": "6.0.1", |       "version": "6.0.1", | ||||||
| @@ -5748,13 +5666,6 @@ | |||||||
|         "node": ">= 8" |         "node": ">= 8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/wordwrap": { |  | ||||||
|       "version": "1.0.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", |  | ||||||
|       "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", |  | ||||||
|       "dev": true, |  | ||||||
|       "license": "MIT" |  | ||||||
|     }, |  | ||||||
|     "node_modules/wrap-ansi": { |     "node_modules/wrap-ansi": { | ||||||
|       "version": "7.0.0", |       "version": "7.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", |       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,12 +1,9 @@ | |||||||
| { | { | ||||||
|   "name": "setup-node", |   "name": "setup-node", | ||||||
|   "version": "6.0.0", |   "version": "4.0.0", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "description": "setup node action", |   "description": "setup node action", | ||||||
|   "main": "lib/setup-node.js", |   "main": "lib/setup-node.js", | ||||||
|   "engines": { |  | ||||||
|     "node": ">=24.0.0" |  | ||||||
|   }, |  | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "build": "ncc build -o dist/setup src/setup-node.ts && ncc build -o dist/cache-save src/cache-save.ts", |     "build": "ncc build -o dist/setup src/setup-node.ts && ncc build -o dist/cache-save src/cache-save.ts", | ||||||
|     "format": "prettier --no-error-on-unmatched-pattern --config ./.prettierrc.js --write \"**/*.{ts,yml,yaml}\"", |     "format": "prettier --no-error-on-unmatched-pattern --config ./.prettierrc.js --write \"**/*.{ts,yml,yaml}\"", | ||||||
| @@ -41,7 +38,7 @@ | |||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@types/jest": "^29.5.14", |     "@types/jest": "^29.5.14", | ||||||
|     "@types/node": "^24.1.0", |     "@types/node": "^20.11.25", | ||||||
|     "@types/semver": "^7.5.8", |     "@types/semver": "^7.5.8", | ||||||
|     "@typescript-eslint/eslint-plugin": "^5.54.0", |     "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||||
|     "@typescript-eslint/parser": "^5.54.0", |     "@typescript-eslint/parser": "^5.54.0", | ||||||
| @@ -53,8 +50,8 @@ | |||||||
|     "jest": "^29.7.0", |     "jest": "^29.7.0", | ||||||
|     "jest-circus": "^29.7.0", |     "jest-circus": "^29.7.0", | ||||||
|     "jest-each": "^29.7.0", |     "jest-each": "^29.7.0", | ||||||
|     "prettier": "^3.6.2", |     "prettier": "^2.8.4", | ||||||
|     "ts-jest": "^29.4.1", |     "ts-jest": "^29.1.2", | ||||||
|     "typescript": "^5.4.2" |     "typescript": "^5.4.2" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -7,7 +7,6 @@ import {getPackageManagerInfo} from './cache-utils'; | |||||||
| // Catch and log any unhandled exceptions.  These exceptions can leak out of the uploadChunk method in | // Catch and log any unhandled exceptions.  These exceptions can leak out of the uploadChunk method in | ||||||
| // @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to | // @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to | ||||||
| // throw an uncaught exception.  Instead of failing this action, just warn. | // throw an uncaught exception.  Instead of failing this action, just warn. | ||||||
|  |  | ||||||
| process.on('uncaughtException', e => { | process.on('uncaughtException', e => { | ||||||
|   const warningPrefix = '[warning]'; |   const warningPrefix = '[warning]'; | ||||||
|   core.info(`${warningPrefix}${e.message}`); |   core.info(`${warningPrefix}${e.message}`); | ||||||
|   | |||||||
| @@ -167,12 +167,14 @@ const getCacheDirectoriesFromCacheDependencyPath = async ( | |||||||
|   packageManagerInfo: PackageManagerInfo, |   packageManagerInfo: PackageManagerInfo, | ||||||
|   cacheDependencyPath: string |   cacheDependencyPath: string | ||||||
| ): Promise<string[]> => { | ): Promise<string[]> => { | ||||||
|   const projectDirectories = |   const projectDirectories = await getProjectDirectoriesFromCacheDependencyPath( | ||||||
|     await getProjectDirectoriesFromCacheDependencyPath(cacheDependencyPath); |     cacheDependencyPath | ||||||
|  |   ); | ||||||
|   const cacheFoldersPaths = await Promise.all( |   const cacheFoldersPaths = await Promise.all( | ||||||
|     projectDirectories.map(async projectDirectory => { |     projectDirectories.map(async projectDirectory => { | ||||||
|       const cacheFolderPath = |       const cacheFolderPath = await packageManagerInfo.getCacheFolderPath( | ||||||
|         await packageManagerInfo.getCacheFolderPath(projectDirectory); |         projectDirectory | ||||||
|  |       ); | ||||||
|       core.debug( |       core.debug( | ||||||
|         `${packageManagerInfo.name}'s cache folder "${cacheFolderPath}" configured for the directory "${projectDirectory}"` |         `${packageManagerInfo.name}'s cache folder "${cacheFolderPath}" configured for the directory "${projectDirectory}"` | ||||||
|       ); |       ); | ||||||
|   | |||||||
							
								
								
									
										54
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -1,7 +1,6 @@ | |||||||
| import * as core from '@actions/core'; | import * as core from '@actions/core'; | ||||||
|  |  | ||||||
| import os from 'os'; | import os from 'os'; | ||||||
| import fs from 'fs'; |  | ||||||
|  |  | ||||||
| import * as auth from './authutil'; | import * as auth from './authutil'; | ||||||
| import * as path from 'path'; | import * as path from 'path'; | ||||||
| @@ -21,9 +20,6 @@ export async function run() { | |||||||
|  |  | ||||||
|     let arch = core.getInput('architecture'); |     let arch = core.getInput('architecture'); | ||||||
|     const cache = core.getInput('cache'); |     const cache = core.getInput('cache'); | ||||||
|     const packagemanagercache = |  | ||||||
|       (core.getInput('package-manager-cache') || 'true').toUpperCase() === |  | ||||||
|       'TRUE'; |  | ||||||
|  |  | ||||||
|     // if architecture supplied but node-version is not |     // if architecture supplied but node-version is not | ||||||
|     // if we don't throw a warning, the already installed x64 node will be used which is not probably what user meant. |     // if we don't throw a warning, the already installed x64 node will be used which is not probably what user meant. | ||||||
| @@ -67,25 +63,10 @@ export async function run() { | |||||||
|       auth.configAuthentication(registryUrl, alwaysAuth); |       auth.configAuthentication(registryUrl, alwaysAuth); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     const cacheDependencyPath = core.getInput('cache-dependency-path'); |     if (cache && isCacheFeatureAvailable()) { | ||||||
|  |  | ||||||
|     if (isCacheFeatureAvailable()) { |  | ||||||
|       // if the cache input is provided, use it for caching. |  | ||||||
|       if (cache) { |  | ||||||
|       core.saveState(State.CachePackageManager, cache); |       core.saveState(State.CachePackageManager, cache); | ||||||
|  |       const cacheDependencyPath = core.getInput('cache-dependency-path'); | ||||||
|       await restoreCache(cache, cacheDependencyPath); |       await restoreCache(cache, cacheDependencyPath); | ||||||
|         // package manager npm is detected from package.json, enable auto-caching for npm. |  | ||||||
|       } else if (packagemanagercache) { |  | ||||||
|         const resolvedPackageManager = getNameFromPackageManagerField(); |  | ||||||
|         if (resolvedPackageManager) { |  | ||||||
|           core.info( |  | ||||||
|             "Detected npm as the package manager from package.json's packageManager field. " + |  | ||||||
|               'Auto caching has been enabled for npm. If you want to disable it, set package-manager-cache input to false' |  | ||||||
|           ); |  | ||||||
|           core.saveState(State.CachePackageManager, resolvedPackageManager); |  | ||||||
|           await restoreCache(resolvedPackageManager, cacheDependencyPath); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     const matchersPath = path.join(__dirname, '../..', '.github'); |     const matchersPath = path.join(__dirname, '../..', '.github'); | ||||||
| @@ -136,34 +117,3 @@ function resolveVersionInput(): string { | |||||||
|  |  | ||||||
|   return version; |   return version; | ||||||
| } | } | ||||||
|  |  | ||||||
| export function getNameFromPackageManagerField(): string | undefined { |  | ||||||
|   const npmRegex = /^(\^)?npm(@.*)?$/; // matches "npm", "npm@...", "^npm@..." |  | ||||||
|   try { |  | ||||||
|     const packageJson = JSON.parse( |  | ||||||
|       fs.readFileSync( |  | ||||||
|         path.join(process.env.GITHUB_WORKSPACE!, 'package.json'), |  | ||||||
|         'utf-8' |  | ||||||
|       ) |  | ||||||
|     ); |  | ||||||
|  |  | ||||||
|     // Check devEngines.packageManager first (object or array) |  | ||||||
|     const devPM = packageJson?.devEngines?.packageManager; |  | ||||||
|     const devPMArray = devPM ? (Array.isArray(devPM) ? devPM : [devPM]) : []; |  | ||||||
|     for (const obj of devPMArray) { |  | ||||||
|       if (typeof obj?.name === 'string' && npmRegex.test(obj.name)) { |  | ||||||
|         return 'npm'; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // Check top-level packageManager |  | ||||||
|     const topLevelPM = packageJson?.packageManager; |  | ||||||
|     if (typeof topLevelPM === 'string' && npmRegex.test(topLevelPM)) { |  | ||||||
|       return 'npm'; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     return undefined; |  | ||||||
|   } catch { |  | ||||||
|     return undefined; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user