【问题标题】:Get major versions NPM Package获取主要版本的 NPM 包
【发布时间】:2020-08-16 15:56:22
【问题描述】:

我正在尝试获取任何特定 NPM 包的所有主要版本的列表。

我可以通过以下API找到包括ma​​jorexperimental版本列表的版本 https://registry.npmjs.org/<pkg_name>

但无法区分主要版本与实验非主要版本的包。我想知道我该怎么做。

我尝试过使用正则表达式,但没有帮助。

这是我的代码

const data = axios.get(`https://registry.npmjs.org/${packageName}`)

const regex = /(\d*)+[.]+(\d*)+[.]+(\d*)/g;
let versions: {}[] = [];

Object.keys(response.data).forEach((data: any) => {
    if (data.match(regex)) {
        versions.push(versionData);
    }
});

【问题讨论】:

  • 专业是什么意思?大概是x.0.0,没有任何-alpha 或其他任何东西,这似乎很容易识别。你试过什么?您的实施有什么具体问题吗?
  • 我正在尝试在程序中获取它。我得到像x.0.0x.0-alpha.0 这样的所有版本。但我只需要像x.x.x 这样的主要版本,其中x 是基本上表示主要版本的数字。
  • 这似乎是一件很容易过滤的事情 - 你的代码在哪里,它有什么问题
  • 我已经用我的代码更新了这个问题。请看一下
  • 你是什么意思“没有帮助”输出是什么?给出一个实际的minimal reproducible example - 例如,HTTP 请求是无关紧要的,并且似乎没有定义 versionData。我还建议使用例如regex101.com 以确保您的模式按预期工作。

标签: javascript node.js api npm


【解决方案1】:

您可以通过编程方式使用 npm(nodejs 代码),但这里有一个命令行参考供您参考。

你可以使用npm-view 来获得你想要的东西。例如:

$ npm view jest --json | jq '."dist-tags"'
{
  "latest": "26.4.0",
  "test": "21.3.0-beta.15",
  "beta": "24.2.0-alpha.0",
  "next": "26.0.1-alpha.0",
  "canary": "25.2.1-alpha.2"
}

【讨论】:

  • 在这种情况下不需要使用jq。改为运行以下命令:npm view jest dist-tags --json
  • 它可以工作,但仍然不能解决我的问题 :( 我需要所有主要版本的列表,包括当前和以前的减去 beta 和实验版本
猜你喜欢
  • 1970-01-01
  • 2018-07-31
  • 2014-02-14
  • 1970-01-01
  • 2019-12-05
  • 2019-03-17
  • 2019-04-15
  • 2013-09-22
  • 1970-01-01
相关资源
最近更新 更多