node-version-alias
Version:
Resolve Node.js version aliases like 'latest', 'lts' or 'erbium'
54 lines (37 loc) • 1.2 kB
JavaScript
import normalizeNodeVersion from"normalize-node-version";
import semver from"semver";
import{getConstantAlias}from"./constant.js";
import{getLtsAlias}from"./lts.js";
import{getNvmCustomAlias}from"./nvm.js";
import{getOpts}from"./options.js";
const nodeVersionAlias=async(alias,opts)=>{
const{allNodeOpts,normalizeOpts}=getOpts(opts);
const versionRange=await getVersionRange(alias,allNodeOpts);
if(versionRange===undefined){
throw new Error(`Invalid Node.js version alias: ${alias}`)
}
const version=await normalizeNodeVersion(versionRange,normalizeOpts);
return version
};
export default nodeVersionAlias;
const getVersionRange=async(alias,allNodeOpts)=>{
if(semver.validRange(alias)!==null){
return alias
}
const versionRange=await getConstantAlias(alias);
if(versionRange!==undefined){
return versionRange
}
const versionRangeA=await getLtsAlias(alias,allNodeOpts);
if(versionRangeA!==undefined){
return versionRangeA
}
return getRecursiveNvmAlias(alias,allNodeOpts)
};
const getRecursiveNvmAlias=async(alias,allNodeOpts)=>{
const aliasResult=await getNvmCustomAlias(alias);
if(aliasResult===undefined||aliasResult===""){
return
}
return getVersionRange(aliasResult,allNodeOpts)
};