查询特定版本的 scoped npm package 信息
Querying information about specific version of scoped npm package
我可以像这样成功查询特定版本的特定 NPM 包的元信息:
GET https://registry.npmjs.org/<name>/<version>
例如:https://registry.npmjs.org/camelcase/2.1.1
但是对于像 @angular/core
这样的范围包,这是行不通的。我尝试了以下所有方法,但都失败了:
- https://registry.npmjs.org/@angular/core/6.1.10 - 401 未经授权
- https://registry.npmjs.org/@angular%2Fcore/6.1.10 - 401 未经授权
- https://registry.npmjs.org/%40angular%2Fcore/6.1.10 - 401 未经授权
- https://registry.npmjs.org/%40angular%2Fcore%2F6.1.10 - 404 未找到
查询范围包的特定版本的正确方法是什么?
您可以通过 bash 命令执行此操作:
npm view @angular/core/6.1.10
所以 npm 正在为范围包的请求添加一些身份验证。为此,您必须在本地目录中有一个有效的 package.json。
当然,最坏的情况下,您可以对 npm 命令执行 process.spawn() 到 运行。
仅供参考,我尝试使用 npm-registry-client 包和我的 npm 凭据:
var RegClient = require('npm-registry-client')
var client = new RegClient({
username: 'mememe',
password: 'xxxxx'
})
var uri = "https://registry.npmjs.org/@angular/core/6.1.10"
var params = {timeout: 1000}
client.get(uri, params, function (error, data, raw, res) {
console.log(data);
})
我得到了这个:
info attempt registry request try #1 at 09:52:09
http request GET https://registry.npmjs.org/@angular/core/6.1.10
http 401 https://registry.npmjs.org/@angular/core/6.1.10
WARN notice ERROR: you cannot fetch versions for scoped packages
他们似乎不允许特定版本查询,但根据@RobC 下面的评论,他们确实允许获取整个存储库的信息,因此您可以在客户端执行此操作:
url = 'https://registry.npmjs.org/@angular%2fcore';
const fetch = require('node-fetch');
fetch(url).then(response => response.json()).then(results => {
console.log(results.versions['6.1.10']);
});
我可以像这样成功查询特定版本的特定 NPM 包的元信息:
GET https://registry.npmjs.org/<name>/<version>
例如:https://registry.npmjs.org/camelcase/2.1.1
但是对于像 @angular/core
这样的范围包,这是行不通的。我尝试了以下所有方法,但都失败了:
- https://registry.npmjs.org/@angular/core/6.1.10 - 401 未经授权
- https://registry.npmjs.org/@angular%2Fcore/6.1.10 - 401 未经授权
- https://registry.npmjs.org/%40angular%2Fcore/6.1.10 - 401 未经授权
- https://registry.npmjs.org/%40angular%2Fcore%2F6.1.10 - 404 未找到
查询范围包的特定版本的正确方法是什么?
您可以通过 bash 命令执行此操作:
npm view @angular/core/6.1.10
所以 npm 正在为范围包的请求添加一些身份验证。为此,您必须在本地目录中有一个有效的 package.json。
当然,最坏的情况下,您可以对 npm 命令执行 process.spawn() 到 运行。
仅供参考,我尝试使用 npm-registry-client 包和我的 npm 凭据:
var RegClient = require('npm-registry-client')
var client = new RegClient({
username: 'mememe',
password: 'xxxxx'
})
var uri = "https://registry.npmjs.org/@angular/core/6.1.10"
var params = {timeout: 1000}
client.get(uri, params, function (error, data, raw, res) {
console.log(data);
})
我得到了这个:
info attempt registry request try #1 at 09:52:09
http request GET https://registry.npmjs.org/@angular/core/6.1.10
http 401 https://registry.npmjs.org/@angular/core/6.1.10
WARN notice ERROR: you cannot fetch versions for scoped packages
他们似乎不允许特定版本查询,但根据@RobC 下面的评论,他们确实允许获取整个存储库的信息,因此您可以在客户端执行此操作:
url = 'https://registry.npmjs.org/@angular%2fcore';
const fetch = require('node-fetch');
fetch(url).then(response => response.json()).then(results => {
console.log(results.versions['6.1.10']);
});