From 32289be4233ed4ebb2f67766bf34160e1fd99103 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Mon, 17 Mar 2025 08:53:24 +0800 Subject: [PATCH] fix: compatible with more node pre-release versions (#9292) * fix: compatible with more node pre-release versions * fix: match prerelease regex * docs: remove changeset --------- Co-authored-by: Zoltan Kochan --- env/plugin-commands-env/src/parseNodeSpecifier.ts | 4 ++-- env/plugin-commands-env/test/parseNodeSpecifier.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/env/plugin-commands-env/src/parseNodeSpecifier.ts b/env/plugin-commands-env/src/parseNodeSpecifier.ts index 1b49c76cb8..7b2d7a0470 100644 --- a/env/plugin-commands-env/src/parseNodeSpecifier.ts +++ b/env/plugin-commands-env/src/parseNodeSpecifier.ts @@ -6,7 +6,7 @@ export interface NodeSpecifier { } const isStableVersion = (version: string): boolean => /^\d+\.\d+\.\d+$/.test(version) -const matchPrereleaseVersion = (version: string): RegExpMatchArray | null => version.match(/^\d+\.\d+\.\d+-(nightly|rc|test|v8-canary)(\..+)$/) +const matchPrereleaseVersion = (version: string): RegExpMatchArray | null => version.match(/^\d+\.\d+\.\d+-((rc)(\..+)|(test|v8-canary|nightly)(.+))$/) const STABLE_RELEASE_ERROR_HINT = 'The correct syntax for stable release is strictly X.Y.Z or release/X.Y.Z' @@ -43,7 +43,7 @@ export function parseNodeSpecifier (specifier: string): NodeSpecifier { const prereleaseMatch = matchPrereleaseVersion(specifier) if (prereleaseMatch != null) { - return { releaseChannel: prereleaseMatch[1], useNodeVersion: specifier } + return { releaseChannel: prereleaseMatch[2], useNodeVersion: specifier } } if (isStableVersion(specifier)) { diff --git a/env/plugin-commands-env/test/parseNodeSpecifier.ts b/env/plugin-commands-env/test/parseNodeSpecifier.ts index c1d3a81b4a..906670e85a 100644 --- a/env/plugin-commands-env/test/parseNodeSpecifier.ts +++ b/env/plugin-commands-env/test/parseNodeSpecifier.ts @@ -49,6 +49,7 @@ test.each([ ['16.0.0-rc.0', '16.0.0-rc.0', 'rc'], ['release/16.0.0', '16.0.0', 'release'], ['16.0.0', '16.0.0', 'release'], + ['24.0.0-nightly20250315d765e70802', '24.0.0-nightly20250315d765e70802', 'nightly'], ])('valid Node.js specifier', async (specifier) => { expect(isValidVersion(specifier)).toBe(true) })