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(