我是npm的新手,我需要获取指定软件包和semver的所有可能版本的列表。与npm semver计算器所做的类似。例如:带有输入数据:包:磁带,semver:“〜2.10.1”,结果应为:[2.10.1,2.10.2,2.10.3]。 您能否推荐如何获得此信息。理想情况下,我需要在python中使用它。谢谢!
答案 0 :(得分:0)
这在节点中可能会更容易,因为使用semver
软件包。我找到了semantic_version
python程序包,但不适用于所有ranges(即1.x
),但涵盖了其中的大部分,包括caret和{{3} }范围。
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