【问题标题】:Why does adding a caret or tilde cause my semver version to be invalid?为什么添加插入符号或波浪号会导致我的 semver 版本无效?
【发布时间】:2017-11-25 01:01:08
【问题描述】:

我正在使用这个包:https://github.com/npm/node-semver 在我正在处理的项目中进行一些简单的 semver 版本比较(我使用的是最新的 5.3.0 版本)。这似乎是一个非常安全的库。事实上,文档说:

节点的 semver 解析器(一个 npm 使用)

所以我很惊讶遇到任何问题。在使用一些非常基本的版本时使用任何比较功能时,我会得到TypeError: Invalid Version,例如:^1.2.3~1.2.3 等。只要我排除插入符号/波浪号,事情就会按预期工作,但是这似乎是真正基本的东西。我错过了什么明显的东西吗?

示例(我只是在 Gulp 任务中运行这些示例):

// logs 1.2.3
console.log(semver.valid('1.2.3'));

// logs 'null'
console.log(semver.valid('^1.2.3'));

// logs 'null'
console.log(semver.valid('~1.2.3'));

// logs TypeError: Invalid Version ^1.2.3`
console.log(semver.satisfies('1.3.0', '^1.2.3')); 

【问题讨论】:

    标签: javascript node.js semantic-versioning


    【解决方案1】:

    版本和版本范围是有区别的; 1.2.3 是前者,^1.2.3 是后者。

    ^1.2.3~1.2.3 不是指任何一个版本;可能有多个版本满足这些范围。

    【讨论】:

    • 是的。你是对的。我绝对理解这种区别,只是不知道它会如何影响函数的行为方式。现在,如果我这样做:const validRange = semver.validRange('^1.2.4');console.log(semver.satisfies('1.3.0', validRange)); 一切都按预期工作。感谢您的帮助!
    猜你喜欢
    • 2021-11-15
    • 2019-06-03
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多