为什么添加插入符或波浪号会导致我的 semver 版本无效?
Why does adding a caret or tilde cause my semver version to be invalid?
我正在使用这个包:https://github.com/npm/node-semver 在我正在处理的项目中进行一些简单的 semver 版本比较(我正在使用最新的 5.3.0 版本)。这似乎是一个非常安全的库。事实上,文档说:
The semver parser for node (the one npm uses)
所以我很惊讶 运行 遇到任何问题。在使用一些非常基本的版本时使用任何比较函数时,我会得到一个 TypeError: Invalid Version
,例如:^1.2.3
、~1.2.3
等。一切都按预期工作,只要我排除 carets/tildes 但这似乎是 真正 基本的东西。我是否遗漏了一些明显的东西?
示例(我只是 运行 这些在 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'));
版本和版本范围是有区别的; 1.2.3
是前者,^1.2.3
是后者。
^1.2.3
和~1.2.3
不指代任何一个版本;可能有多个版本满足这些范围。
我正在使用这个包:https://github.com/npm/node-semver 在我正在处理的项目中进行一些简单的 semver 版本比较(我正在使用最新的 5.3.0 版本)。这似乎是一个非常安全的库。事实上,文档说:
The semver parser for node (the one npm uses)
所以我很惊讶 运行 遇到任何问题。在使用一些非常基本的版本时使用任何比较函数时,我会得到一个 TypeError: Invalid Version
,例如:^1.2.3
、~1.2.3
等。一切都按预期工作,只要我排除 carets/tildes 但这似乎是 真正 基本的东西。我是否遗漏了一些明显的东西?
示例(我只是 运行 这些在 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'));
版本和版本范围是有区别的; 1.2.3
是前者,^1.2.3
是后者。
^1.2.3
和~1.2.3
不指代任何一个版本;可能有多个版本满足这些范围。