Разрешение по NPM - PullRequest
       12

Разрешение по NPM

0 голосов
/ 10 января 2019

Я новичок в npm, и мне нужно получить список всех возможных версий для указанного пакета и сервера. Похоже, что делает калькулятор npm semver. Например: с входными данными: package: tape, semver: '~ 2.10.1', результат должен быть: [2.10.1, 2.10.2, 2.10.3]. Не могли бы вы порекомендовать, как получить это. В идеале мне нужно это в Python. Спасибо!

1 Ответ

0 голосов
/ 18 января 2019

Это, вероятно, будет проще в узле, поскольку пакет semver. Я нашел пакет semantic_version python, но он не работает на всех диапазонах (т.е. 1.x), но, похоже, охватывает большинство из них, включая caret и тильда диапазоны.

import requests
from semantic_version import Spec, Version

def get_npm_versions(package, range):
    # Make get request to npm registry for given package
    response = requests.get('https://registry.npmjs.org/%s'%(package))

    # Check for good response
    if response.status_code == 200:
        # Parse response
        data = response.json()
        # Convert unicode to strings
        versions = map(str, data['versions'].keys())
        # Convert strings to `Version`s
        versions = map(Version, versions)
        # Create range `Spec`
        range_spec = Spec(range)

        return range_spec.filter(versions)
    else:
        raise Exception('NPM registry not reachable :(')

# Use function with to get `tape@~2.10.1`
versions = get_npm_versions('tape', '~2.10.1')

for v in versions:
    print v

...