fix(version matching): now respecting packages without latest tag

This commit is contained in:
2021-05-06 10:04:51 +00:00
parent 77d515d915
commit b4100688ac
2 changed files with 31 additions and 5 deletions

View File

@@ -108,21 +108,20 @@ export class NpmPackage {
if (optionsArg.distTag && optionsArg.version) {
throw new Error('Please either specify version OR disttag, not both.');
}
let targetVersion: plugins.smartversion.SmartVersion;
let targetVersionString: string;
if (optionsArg.distTag) {
const targetDistTag = this.allDistTags.find((distTag) => {
return distTag.name === optionsArg.distTag;
});
if (targetDistTag) {
targetVersion = new plugins.smartversion.SmartVersion(targetDistTag.targetVersion);
targetVersionString = targetDistTag.targetVersion;
}
} else {
targetVersion = plugins.smartversion.SmartVersion.fromFuzzyString(optionsArg.version);
targetVersionString = optionsArg.version;
}
// lets find the best matching release
const versionStrings = this.allVersions.map((packageVersion) => packageVersion.version);
const bestMatchingVersion = targetVersion.getBestMatch(versionStrings);
const bestMatchingVersion = this.getBestMatchingVersion(targetVersionString);
if (!bestMatchingVersion) {
return null;
}
@@ -173,4 +172,15 @@ export class NpmPackage {
* updates the package with information from the registry
*/
update() {}
/** */
public getBestMatchingVersion(versionArg: string): string {
// lets find the best matching release
const targetVersion = plugins.smartversion.SmartVersion.fromFuzzyString(versionArg);
const versionStrings = this.allVersions.map((packageVersion) => packageVersion.version);
const bestMatchingVersion = targetVersion.getBestMatch(versionStrings);
if (!bestMatchingVersion) {
return null;
}
}
}