例如:
2.0.0
版本package-name
。2.1.2
npm install package-name@latest
将会安装4.3.0
如何安装没有重大更改的最新软件包?
答案 0 :(得分:6)
Npm使用semver,因此您可以使用各种方法来接近目标
查看官方documentation,您可以使用以下内容:
npm install package-name@">=2.1.2 <2.2.0"
还有更多种类的范围,因此您可以使用此表格 Advanced Range Syntax正如您所看到的,这是一个样本,最终的semver repo中有趣的摘录是您的答案:
高级范围语法desugars到原始比较器 确定性的方式。
高级范围可以与基元相同的方式组合 使用空格或||的比较器。 Hyphen Ranges X.Y.Z - A.B.C
指定包含集。
1.2.3 - 2.3.4 := >=1.2.3 <=2.3.4
如果提供部分版本作为包含中的第一个版本 范围,然后将缺失的部分替换为零。
1.2 - 2.3.4 := >=1.2.0 <=2.3.4
如果提供部分版本作为第二个版本 包含范围,然后是所有以提供的部件开头的版本 元组被接受了,但没有什么比大于 提供了元组部分。
1.2.3 - 2.3 := >=1.2.3 <2.4.0 1.2.3 - 2 := >=1.2.3 <3.0.0
X-Ranges 1.2.x 1.X 1.2。* *
X,x或*中的任何一个都可以用于&#34;站在&#34;其中一个数字 [major,minor,patch]元组中的值。
* := >=0.0.0 (Any version satisfies) 1.x := >=1.0.0 <2.0.0 (Matching major version) 1.2.x := >=1.2.0 <1.3.0 (Matching major and minor versions)
部分版本范围被视为X-Range,因此特殊 字符实际上是可选的。
"" (empty string) := * := >=0.0.0 1 := 1.x.x := >=1.0.0 <2.0.0 1.2 := 1.2.x := >=1.2.0 <1.3.0
Tilde范围~1.2.3~1.2~1
如果指定了次要版本,则允许修补程序级别更改 比较。如果没有,则允许进行次要级别更改。
~1.2.3 := >=1.2.3 <1.(2+1).0 := >=1.2.3 <1.3.0 ~1.2 := >=1.2.0 <1.(2+1).0 := >=1.2.0 <1.3.0 (Same as 1.2.x) ~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0 (Same as 1.x) ~0.2.3 := >=0.2.3 <0.(2+1).0 := >=0.2.3 <0.3.0 ~0.2 := >=0.2.0 <0.(2+1).0 := >=0.2.0 <0.3.0 (Same as 0.2.x) ~0 := >=0.0.0 <(0+1).0.0 := >=0.0.0 <1.0.0 (Same as 0.x) ~1.2.3-beta.2 := >=1.2.3-beta.2 <1.3.0 Note that prereleases in the 1.2.3 version will be allowed, if they are greater than or equal
到beta.2。因此,1.2.3-beta.4将被允许,但1.2.4-beta.2将允许 不,因为它是一个不同的[主要,次要,补丁]的预发布 元组。
Caret Ranges ^ 1.2.3 ^ 0.2.5 ^ 0.0.4
允许更改不会修改最左边的非零数字 [主要,次要,补丁]元组。换句话说,这允许补丁和 1.0.0及更高版本的次要更新,版本的修补程序更新 0.X&gt; = 0.1.0,版本0.0.X。
没有更新许多作者将0.x版本视为x是主要版本 &#34;破变化&#34;指示器。
当作者可能会做出重大改变时,插入符号是理想的选择 介于0.2.4和0.3.0之间,这是一种常见的做法。然而, 它假定在0.2.4和0.2之间不会有突破性的变化 0.2.5。根据通常观察到的做法,它允许假定为加性(但不破坏)的变化。
^1.2.3 := >=1.2.3 <2.0.0 ^0.2.3 := >=0.2.3 <0.3.0 ^0.0.3 := >=0.0.3 <0.0.4 ^1.2.3-beta.2 := >=1.2.3-beta.2 <2.0.0 Note that prereleases in the 1.2.3 version will be allowed, if they are greater than or equal
到beta.2。因此,1.2.3-beta.4将被允许,但1.2.4-beta.2将允许 不,因为它是一个不同的[主要,次要,补丁]的预发布 元组。 ^ 0.0.3-beta:=&gt; = 0.0.3-beta&lt; 0.0.4请注意,只有0.0.3版本中的预发布版本大于或等于beta时才允许。因此,允许0.0.3-pr.2。
解析插入符号范围时,丢失的补丁值会消耗掉 数字0,但允许在该值内的灵活性,即使 主要版本和次要版本均为0。
^1.2.x := >=1.2.0 <2.0.0 ^0.0.x := >=0.0.0 <0.1.0 ^0.0 := >=0.0.0 <0.1.0
缺少次要值和补丁值会降低到零,但也允许 这些值的灵活性,即使主要版本为零。
^1.x := >=1.0.0 <2.0.0 ^0.x := >=0.0.0 <1.0.0
总结你的例子可能是
npm install package-name@"^2.1.x"
答案 1 :(得分:6)
使用npm install package-name@"<next-major.0.0"
例如:
npm install package-name@"<3.0.0"
会在3.0.0之前安装最新版本(例如2.11.1)
答案 2 :(得分:1)
您可以使用以下两种方法: -
用最简单的术语来说,代字号与最新的次要版本相匹配 (中间数字)。 ~1.2.3将匹配所有1.2.x版本,但会 错过1.3.0。
另一方面,插入符号更放松。它会更新你 最新的主要版本(第一个数字)。 ^ 1.2.3将匹配 任何1.x.x版本,包括1.3.0,但将在2.0.0推迟。
http://fredkschott.com/post/2014/02/npm-no-longer-defaults-to-tildes/
答案 3 :(得分:1)
major.minor.patch = 1.0.3
major version
= 1
,
minor version
= 0
,
patch version
= 3
Major
、minor
和 patch
表示 releases
的不同 package
。tilde (~)
和 caret (^)
分别指定要使用的 patch
和 minor
版本。~1.0.3
- 表示 install
version 1.0.3
或 latest
patch
version
,例如 1.0.6
。^1.0.3
- 表示 install
version
1.0.3
或 latest
minor
或 patch
version
这样的如1.4.0
。npm
package.json
引用尚未达到版本 1.0
的包,使用 caret(^)
符号只会获取 patch
{{1 }}。答案 4 :(得分:0)
我遇到了同样的问题,并且来自Java&Maven环境,我将首先在https://www.npmjs.com/中搜索我的每个特定软件包。
然后,我将查看软件包的“版本”选项卡,并找到有关其版本的更多信息。 我认为主要版本带来了重大变化,而次要版本仅包含代码改进和错误修复,至少这是惯例。但是阅读手册总是有帮助的:)
有时候,版本谓词可以这样构成:“ codelyzer@5.2.2需要一个对等体@ angular / compiler @> = 2.3.1 <10.0.0 ||> 9.0.0-beta <10.0.0 ||> 9.1.0-beta <10.0.0 ||> 9.2.0-beta <10.0.0,但未安装。您必须自己安装对等依赖项。“