[build-utils] Refactor getNodeVersion (#11599)

Makes variable names more clear and consistent.
This commit is contained in:
Austin Merrick
2024-05-15 10:17:41 -07:00
committed by GitHub
parent 446ac49e2b
commit 41c44d6594
2 changed files with 20 additions and 12 deletions

View File

@@ -0,0 +1,2 @@
---
---

View File

@@ -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(