【问题标题】:semver + latest with NPM dependenciessemver + latest 具有 NPM 依赖项
【发布时间】: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 semantic-versioning


    【解决方案1】:

    有没有办法用 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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-30
      • 2016-02-18
      • 2017-10-01
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 2021-12-28
      相关资源
      最近更新 更多