web-dev-qa-db-ja.com

npmにパッケージの最新のマイナーバージョンをインストールするにはどうすればよいですか?

例えば:

  • バージョン2.0.0/package-nameインストール済み。
  • 同じメジャーバージョンを持つ最新のマイナーバージョンは2.1.2
  • 最新のメジャーバージョン(実行した場合にインストールされますnpm install package-name@latest4.3.0

重大な変更がない最新のパッケージをインストールするにはどうすればよいですか?

18
mikemaccana

使用する npm install package-name@"<next-major.0.0"

例えば:

npm install package-name@"<3.0.0"は3.0.0より前の最新バージョンをインストールします(例:2.11.1)

18

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"
8
anquegi

次の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/

2
Vivek Sharma