例えば:
2.0.0
/package-name
インストール済み。2.1.2
npm install package-name@latest
は4.3.0
重大な変更がない最新のパッケージをインストールするにはどうすればよいですか?
使用する npm install package-name@"<next-major.0.0"
例えば:
npm install package-name@"<3.0.0"
は3.0.0より前の最新バージョンをインストールします(例:2.11.1)
Npmはsemverを使用しているため、目標に近づくためにさまざまなものを使用できます
公式 documentation を見ると、次のようなものを使用できます。
npm install package-name@">=2.1.2 <2.2.0"
さらに多くのさまざまな範囲があるので、この形式を使用できます 高度な範囲の構文 ご覧のとおり、これは、最後のsemverリポジトリからの興味深い抽出のサンプルです。 :
高度な範囲構文は、決定論的な方法でプリミティブコンパレーターに変換されます。
高度な範囲は、空白または||を使用してプリミティブコンパレータと同じ方法で組み合わせることができます。ハイフンの範囲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
部分的なバージョンが包括的範囲の2番目のバージョンとして提供される場合、タプルの提供された部分で始まるすべてのバージョンが受け入れられますが、提供されたタプルの部分よりも大きいものはありません。
1.2.3 - 2.3 := >=1.2.3 <2.4.0 1.2.3 - 2 := >=1.2.3 <3.0.0
X範囲1.2.x 1.X 1.2。* *
X、x、または*のいずれかを使用して、[メジャー、マイナー、パッチ]タプルの数値の1つを「代用」できます。
* := >=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
チルダ範囲〜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は許可されません。これは、異なる[メジャー、マイナー、パッチ]タプルのプレリリースであるためです。
キャレット範囲^ 1.2.3 ^ 0.2.5 ^ 0.0.4
[メジャー、マイナー、パッチ]タプルの左端のゼロ以外の数字を変更しない変更を許可します。つまり、バージョン1.0.0以降のパッチとマイナーアップデート、バージョン0.X> = 0.1.0のパッチアップデート、バージョン0.0.Xのアップデートなしを許可します。
多くの著者は、xが主要な「重大な変更」インジケータであるかのように0.xバージョンを扱います。
キャレットの範囲は、作者が0.2.4と0.3.0のリリース間で重大な変更を加える場合に理想的です。これは一般的な方法です。ただし、0.2.4と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:=> = 0.0.3-beta <0.0.4 0.0.3バージョンのプレリリースは、ベータ以上の場合にのみ許可されます。したがって、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"
次の2つの方法を使用できます。
簡単に言うと、ティルダは最新のマイナーバージョン(中央の数字)と一致します。 〜1.2.3はすべての1.2.xバージョンに一致しますが、1.3.0には対応しません。
一方、キャレットはよりリラックスしています。最新のメジャーバージョン(最初の番号)に更新されます。 ^ 1.2.3は、1.3.0を含むすべての1.x.xリリースと一致しますが、2.0.0には対応しません。
http://fredkschott.com/post/2014/02/npm-no-longer-defaults-to-tildes/