Compare commits

..

1 Commits

Author SHA1 Message Date
Ferdinand Thiessen
3ebb1b2bd1
Merge 88483fd687 into 08f58d1471 2025-06-19 18:51:45 +05:00
6 changed files with 24 additions and 61 deletions

View File

@ -183,21 +183,6 @@ jobs:
- name: Verify node - name: Verify node
run: __tests__/verify-node.sh 20 run: __tests__/verify-node.sh 20
version-file-dev-engines-array:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
steps:
- uses: actions/checkout@v4
- name: Setup node from node version file
uses: ./
with:
node-version-file: '__tests__/data/package-dev-engines-array.json'
- name: Verify node
run: __tests__/verify-node.sh 20
version-file-volta: version-file-volta:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:

View File

@ -1,17 +0,0 @@
{
"engines": {
"node": "^19"
},
"devEngines": {
"runtime": [
{
"name": "bun",
"version": "^1"
},
{
"name": "node",
"version": "^20"
}
]
}
}

View File

@ -1,6 +1,6 @@
{ {
"engines": { "engines": {
"node": "^19" "node": "^20 || ^22"
}, },
"devEngines": { "devEngines": {
"runtime": { "runtime": {

View File

@ -103,12 +103,11 @@ describe('main tests', () => {
${''} | ${''} ${''} | ${''}
${'unknown format'} | ${'unknown format'} ${'unknown format'} | ${'unknown format'}
${' 14.1.0 '} | ${'14.1.0'} ${' 14.1.0 '} | ${'14.1.0'}
${'{}'} | ${null}
${'{"volta": {"node": ">=14.0.0 <=17.0.0"}}'} | ${'>=14.0.0 <=17.0.0'} ${'{"volta": {"node": ">=14.0.0 <=17.0.0"}}'} | ${'>=14.0.0 <=17.0.0'}
${'{"volta": {"extends": "./package.json"}}'} | ${'18.0.0'} ${'{"volta": {"extends": "./package.json"}}'} | ${'18.0.0'}
${'{"engines": {"node": "17.0.0"}}'} | ${'17.0.0'} ${'{"engines": {"node": "17.0.0"}}'} | ${'17.0.0'}
${'{"devEngines": {"runtime": {"name": "node", "version": "22.0.0"}}}'} | ${'22.0.0'} ${'{"devEngines": {"runtime": {"name": "node", "version": "22.0.0"}}}'} | ${'22.0.0'}
${'{"devEngines": {"runtime": [{"name": "bun"}, {"name": "node", "version": "22.0.0"}]}}'} | ${'22.0.0'} ${'{}'} | ${null}
`.it('parses "$contents"', ({contents, expected}) => { `.it('parses "$contents"', ({contents, expected}) => {
const existsSpy = jest.spyOn(fs, 'existsSync'); const existsSpy = jest.spyOn(fs, 'existsSync');
existsSpy.mockImplementation(() => true); existsSpy.mockImplementation(() => true);

View File

@ -86,7 +86,7 @@ This example will install a Node version based on the `^20.10` pattern.
```json ```json
{ {
"engines": { "engines": {
"node": "^19" "node": "^20 || ^22"
}, },
"devEngines": { "devEngines": {
"runtime": { "runtime": {

View File

@ -27,15 +27,11 @@ export function getNodeVersionFromFile(versionFilePath: string): string | null {
} }
// support devEngines from npm 11 // support devEngines from npm 11
if (manifest.devEngines?.runtime) { if (
// find an entry with name set to node and having set a version. manifest.devEngines?.runtime?.name === 'node' &&
// the devEngines.runtime can either be an object or an array of objects manifest.devEngines.runtime.version
const nodeEntry = [manifest.devEngines.runtime] ) {
.flat() return manifest.devEngines.runtime.version;
.find(({name, version}) => name.toLowerCase() === 'node' && version);
if (nodeEntry) {
return nodeEntry.version;
}
} }
if (manifest.engines?.node) { if (manifest.engines?.node) {