From bad353b51d8f74ab7adde400c32e12c3f7f9e5e8 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 24 Sep 2021 11:22:20 +0200 Subject: [PATCH] cli: skip caret in version query for prereleases Signed-off-by: Patrik Oldsberg --- packages/cli/src/lib/version.test.ts | 1 + packages/cli/src/lib/version.ts | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/lib/version.test.ts b/packages/cli/src/lib/version.test.ts index c7fd5f9b75..415ada76d6 100644 --- a/packages/cli/src/lib/version.test.ts +++ b/packages/cli/src/lib/version.test.ts @@ -60,6 +60,7 @@ describe('createPackageVersionProvider', () => { expect(provider('c', '0.1.6')).toBe('^0.1.4'); expect(provider('c', '0.2.0')).toBe('^0.2.0'); expect(provider('c', '0.2.6')).toBe('^0.2.4'); + expect(provider('c', '0.3.0-rc1')).toBe('0.3.0-rc1'); expect(provider('c', '0.3.0')).toBe('^0.3.0'); expect(provider('c', '0.3.6')).toBe('^0.3.4'); expect(provider('@backstage/cli')).toBe('*'); diff --git a/packages/cli/src/lib/version.ts b/packages/cli/src/lib/version.ts index 52ff594423..c69072c64d 100644 --- a/packages/cli/src/lib/version.ts +++ b/packages/cli/src/lib/version.ts @@ -65,7 +65,8 @@ export const isDev = fs.pathExistsSync(paths.resolveOwn('src')); export function createPackageVersionProvider(lockfile?: Lockfile) { return (name: string, versionHint?: string) => { - const targetVersion = versionHint || packageVersions[name]; + const packageVersion = packageVersions[name]; + const targetVersion = versionHint || packageVersion; if (!targetVersion) { throw new Error(`No version available for package ${name}`); } @@ -81,6 +82,16 @@ export function createPackageVersionProvider(lockfile?: Lockfile) { semver.satisfies(targetVersion, entry.range), ); const highestRange = validRanges?.slice(-1)[0]; - return highestRange?.range ?? `^${targetVersion}`; + + if (highestRange?.range) { + return highestRange?.range; + } + if (packageVersion) { + return `^${packageVersion}`; + } + if (semver.parse(versionHint)?.prerelease.length) { + return versionHint!; + } + return `^${versionHint}`; }; }