cli: skip caret in version query for prereleases
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
@@ -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('*');
|
||||
|
||||
@@ -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}`;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user