cli: skip caret in version query for prereleases

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2021-09-24 11:22:20 +02:00
parent e7ac4b406c
commit bad353b51d
2 changed files with 14 additions and 2 deletions
+1
View File
@@ -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('*');
+13 -2
View File
@@ -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}`;
};
}