mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-06 04:22:01 +00:00
[build-utils] Refactor getNodeVersion (#11599)
Makes variable names more clear and consistent.
This commit is contained in:
2
.changeset/dirty-wombats-appear.md
Normal file
2
.changeset/dirty-wombats-appear.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
---
|
||||||
@@ -240,31 +240,34 @@ export function getSpawnOptions(
|
|||||||
|
|
||||||
export async function getNodeVersion(
|
export async function getNodeVersion(
|
||||||
destPath: string,
|
destPath: string,
|
||||||
nodeVersionFallback = process.env.VERCEL_PROJECT_SETTINGS_NODE_VERSION,
|
fallbackVersion = process.env.VERCEL_PROJECT_SETTINGS_NODE_VERSION,
|
||||||
config: Config = {},
|
config: Config = {},
|
||||||
meta: Meta = {},
|
meta: Meta = {},
|
||||||
availableVersions = getAvailableNodeVersions()
|
availableVersions = getAvailableNodeVersions()
|
||||||
): Promise<NodeVersion> {
|
): Promise<NodeVersion> {
|
||||||
const latest = getLatestNodeVersion(availableVersions);
|
const latestVersion = getLatestNodeVersion(availableVersions);
|
||||||
if (meta.isDev) {
|
if (meta.isDev) {
|
||||||
// Use the system-installed version of `node` in PATH for `vercel dev`
|
// Use the system-installed version of `node` in PATH for `vercel dev`
|
||||||
return { ...latest, runtime: 'nodejs' };
|
return { ...latestVersion, runtime: 'nodejs' };
|
||||||
}
|
}
|
||||||
const { packageJson } = await scanParentDirs(destPath, true);
|
const { packageJson } = await scanParentDirs(destPath, true);
|
||||||
const nodeVersion = config.nodeVersion || nodeVersionFallback;
|
const configuredVersion = config.nodeVersion || fallbackVersion;
|
||||||
|
|
||||||
const pkgJsonNodeVersion = packageJson?.engines?.node;
|
const packageJsonVersion = packageJson?.engines?.node;
|
||||||
const nodeVersionToUse = await getSupportedNodeVersion(
|
const supportedNodeVersion = await getSupportedNodeVersion(
|
||||||
pkgJsonNodeVersion || nodeVersion,
|
packageJsonVersion || configuredVersion,
|
||||||
!pkgJsonNodeVersion,
|
!packageJsonVersion,
|
||||||
availableVersions
|
availableVersions
|
||||||
);
|
);
|
||||||
|
|
||||||
if (packageJson?.engines?.node) {
|
if (packageJson?.engines?.node) {
|
||||||
const { node } = packageJson.engines;
|
const { node } = packageJson.engines;
|
||||||
if (nodeVersion && !intersects(nodeVersion, nodeVersionToUse.range)) {
|
if (
|
||||||
|
configuredVersion &&
|
||||||
|
!intersects(configuredVersion, supportedNodeVersion.range)
|
||||||
|
) {
|
||||||
console.warn(
|
console.warn(
|
||||||
`Warning: Due to "engines": { "node": "${node}" } in your \`package.json\` file, the Node.js Version defined in your Project Settings ("${nodeVersion}") will not apply. Learn More: http://vercel.link/node-version`
|
`Warning: Due to "engines": { "node": "${node}" } in your \`package.json\` file, the Node.js Version defined in your Project Settings ("${configuredVersion}") will not apply. Learn More: http://vercel.link/node-version`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,13 +275,16 @@ export async function getNodeVersion(
|
|||||||
console.warn(
|
console.warn(
|
||||||
`Warning: Detected "engines": { "node": "${node}" } in your \`package.json\` with major.minor.patch, but only major Node.js Version can be selected. Learn More: http://vercel.link/node-version`
|
`Warning: Detected "engines": { "node": "${node}" } in your \`package.json\` with major.minor.patch, but only major Node.js Version can be selected. Learn More: http://vercel.link/node-version`
|
||||||
);
|
);
|
||||||
} else if (validRange(node) && intersects(`${latest.major + 1}.x`, node)) {
|
} else if (
|
||||||
|
validRange(node) &&
|
||||||
|
intersects(`${latestVersion.major + 1}.x`, node)
|
||||||
|
) {
|
||||||
console.warn(
|
console.warn(
|
||||||
`Warning: Detected "engines": { "node": "${node}" } in your \`package.json\` that will automatically upgrade when a new major Node.js Version is released. Learn More: http://vercel.link/node-version`
|
`Warning: Detected "engines": { "node": "${node}" } in your \`package.json\` that will automatically upgrade when a new major Node.js Version is released. Learn More: http://vercel.link/node-version`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nodeVersionToUse;
|
return supportedNodeVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function scanParentDirs(
|
export async function scanParentDirs(
|
||||||
|
|||||||
Reference in New Issue
Block a user