有效的NPM依赖关系可能类似于:
dependencies:{
"lodash":"latest"
}
但是我这样使用semver:
semver.eq('2.1.3','latest');
然后我得到:
TypeError: Invalid Version: latest
有没有办法用semver或即席处理“最新”消息?
答案 0 :(得分:1)
有没有办法用semver处理'最新'...?
否,不使用semver包本身,因为它不知道什么是“最新”。存储在npm注册表中的元数据将给定包的“最新”与semver相关联。
请考虑使用npm-view或execSync()
为exec()
命令添加外壳,以获取npm注册表 1 中包的“最新”存储符号。 sup> 。然后将返回的值作为第二个参数传递给semver.eq(...)
比较。
例如:
const semver = require('semver');
const execSync = require('child_process').execSync;
function getLatestVersion(pkg) {
return JSON.parse(execSync(`npm view ${pkg} version --json`,
{ stdio: ['ignore', 'pipe', 'pipe'] }).toString());
}
const isEqual = semver.eq('2.1.3', getLatestVersion('lodash'));
console.log(isEqual); // --> false