semver +最新,具有NPM依赖性

时间:2018-10-11 05:40:47

标签: npm semantic-versioning

有效的NPM依赖关系可能类似于:

dependencies:{
  "lodash":"latest"
}

但是我这样使用semver:

semver.eq('2.1.3','latest');

然后我得到:

TypeError: Invalid Version: latest

有没有办法用semver或即席处理“最新”消息?

1 个答案:

答案 0 :(得分:1)

  

有没有办法用semver处理'最新'...​​?

否,不使用semver包本身,因为它不知道什么是“最新”。存储在npm注册表中的元数据将给定包的“最新”与semver相关联。

请考虑使用npm-viewexecSync()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

  1. 您从上一个问题here中得知自己。 'latest'版本的确切含义是,它是'stable''alpha''beta''rc'等可以有所不同。但是,如果程序包所有者正确发布了更新,则很有可能是'stable'