From 41c44d659412c5d7ee70261a9c255aa687e7b37e Mon Sep 17 00:00:00 2001 From: Austin Merrick Date: Wed, 15 May 2024 10:17:41 -0700 Subject: [PATCH] [build-utils] Refactor `getNodeVersion` (#11599) Makes variable names more clear and consistent. --- .changeset/dirty-wombats-appear.md | 2 ++ .../build-utils/src/fs/run-user-scripts.ts | 30 +++++++++++-------- 2 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 .changeset/dirty-wombats-appear.md diff --git a/.changeset/dirty-wombats-appear.md b/.changeset/dirty-wombats-appear.md new file mode 100644 index 000000000..a845151cc --- /dev/null +++ b/.changeset/dirty-wombats-appear.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/packages/build-utils/src/fs/run-user-scripts.ts b/packages/build-utils/src/fs/run-user-scripts.ts index 922524845..fa7b00b7f 100644 --- a/packages/build-utils/src/fs/run-user-scripts.ts +++ b/packages/build-utils/src/fs/run-user-scripts.ts @@ -240,31 +240,34 @@ export function getSpawnOptions( export async function getNodeVersion( destPath: string, - nodeVersionFallback = process.env.VERCEL_PROJECT_SETTINGS_NODE_VERSION, + fallbackVersion = process.env.VERCEL_PROJECT_SETTINGS_NODE_VERSION, config: Config = {}, meta: Meta = {}, availableVersions = getAvailableNodeVersions() ): Promise { - const latest = getLatestNodeVersion(availableVersions); + const latestVersion = getLatestNodeVersion(availableVersions); if (meta.isDev) { // 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 nodeVersion = config.nodeVersion || nodeVersionFallback; + const configuredVersion = config.nodeVersion || fallbackVersion; - const pkgJsonNodeVersion = packageJson?.engines?.node; - const nodeVersionToUse = await getSupportedNodeVersion( - pkgJsonNodeVersion || nodeVersion, - !pkgJsonNodeVersion, + const packageJsonVersion = packageJson?.engines?.node; + const supportedNodeVersion = await getSupportedNodeVersion( + packageJsonVersion || configuredVersion, + !packageJsonVersion, availableVersions ); if (packageJson?.engines?.node) { const { node } = packageJson.engines; - if (nodeVersion && !intersects(nodeVersion, nodeVersionToUse.range)) { + if ( + configuredVersion && + !intersects(configuredVersion, supportedNodeVersion.range) + ) { 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( `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( `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(