【问题标题】:How to query npm API for a multi-part Typescript package?如何查询 npm API 以获取多部分 Typescript 包?
【发布时间】:2021-05-14 01:06:38
【问题描述】:

目前正在为 Docker Hub 托管的 slidev 的 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) 返回

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

查询https://api.npms.io/v2/package/slidev-cli返回

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

有什么办法可以吗?

【问题讨论】:

    标签: python api npm package


    【解决方案1】:

    经过一番修改,我找到了使用搜索功能的解决方法

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

    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
    

    【讨论】:

      猜你喜欢
      • 2021-12-04
      • 2018-02-04
      • 2013-02-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 2020-06-30
      • 2022-10-04
      • 1970-01-01
      相关资源
      最近更新 更多