semver + latest 与 NPM 依赖

semver + latest with NPM dependencies

有效的 NPM 依赖项可能如下所示:

dependencies:{
  "lodash":"latest"
}

但我是这样使用 semver 的:

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

然后我得到:

TypeError: Invalid Version: latest

有没有办法用 semver 或临时处理 'latest'?

Is there a way to handle 'latest' with semver ....?

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

考虑删除 npm-view command, using execSync() or exec(),以检索 npm 注册表中包的 'latest' 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

  1. 正如您从上一个问题中了解到的那样 here'latest' 版本到底解析了什么,无论是 'stable''alpha' 'beta''rc' 等可能会有所不同。但是,如果包所有者已正确发布更新,则最有可能是 'stable'.