【发布时间】:2019-03-16 02:49:05
【问题描述】:
一个有效的 NPM 依赖可能如下所示:
dependencies:{
"lodash":"latest"
}
但我像这样使用 semver:
semver.eq('2.1.3','latest');
然后我得到:
TypeError: Invalid Version: latest
有没有办法用 semver 或只是 ad-hoc 处理“最新”?
【问题讨论】:
一个有效的 NPM 依赖可能如下所示:
dependencies:{
"lodash":"latest"
}
但我像这样使用 semver:
semver.eq('2.1.3','latest');
然后我得到:
TypeError: Invalid Version: latest
有没有办法用 semver 或只是 ad-hoc 处理“最新”?
【问题讨论】:
有没有办法用 semver 处理“最新”......?
不,不使用 semver 包本身,因为它不知道“最新”是什么。存储在 npm 注册表中的元数据将给定包的“最新”与 semver 相关联。
考虑使用execSync() 或exec() 对npm-view 命令进行炮击,以检索npm 注册表中包的“最新”semver 1 .然后将返回值作为第二个参数传递给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
【讨论】: