如何在 npm API 中查询多部分 Typescript 包?

How to query npm API for a multi-part Typescript package?

目前正在为 slidev hosted at Docker Hub 的 docker 图像开发自动构建,我需要将已构建的版本与模块的 npm 可用版本进行比较

我有这个代码:

import requests as curl


def getreleasegh():
    url = "https://api.github.com/repos/slidevjs/slidev/tags"
    with curl.get(url) as r:
        if r.status_code == 200:
            j = r.json()
    release = j[0]['name']
    release.replace("v", "")
    return release


def getactualimage():
    url = 'https://registry.hub.docker.com/v2/repositories/stig124/slidev/tags/'
    with curl.get(url) as r:
        if r.status_code == 200:
            j = r.json()
    image = j['results'][0]['name']
    return image

我要查询版本的npm包是@slidev,每个子包都是相同的版本标签

我使用了 npms.io API question

中的建议

有没有办法查询分包?

查询任何子包的 API 端点(https://api.npms.io/v2/package/@slidev-cli)return

{"code":"INVALID_PARAMETER","message":"name can only contain URL-friendly characters (\"@slidev-cli\")"}

正在查询 https://api.npms.io/v2/package/slidev-cli returns

{"code":"NOT_FOUND","message":"Module not found"}

有什么办法可以吗?

经过一些修补,我通过使用搜索功能找到了解决方法

我使用 https://api.npms.io/v2/search?q=slidev 搜索 slidev 然后通过查找包 scope 是否是父包的名称(带有 [=14= 的那个)来处理第一个条目]) 如果不是,我会跳转到下一个条目,依此类推,效果很好

def checknpm():
    base = 'https://api.npms.io/v2/search?q='
    package = 'slidev'
    url = base + package
    with curl.get(url) as r:
        if r.status_code == 200:
            j = r.json()
    for i in range(5):
        if package in str(j['results'][i]['package']['scope']):
            npm = str(j['results'][i]['package']['version'])
            break