Edited at

【いまさらですが】package.jsonのversion指定

More than 1 year has passed since last update.

package.jsonのdependenciesdevDependenciesに依存するパッケージを指定することができます。

いまさらですが、そのパッケージのversionの指定方法についてまとめます。


version

指定したversionと正確に一致するバージョンがインストールされます。

{

"dependencies": {
"foo": "1.0.0"
}
}

上記の場合は、1.0.0のバージョンがインストールされます。


>version

指定したversionより大きいバージョンがインストールされます。

{

"dependencies": {
"foo": ">1.0.0"
}
}

上記の場合は、1.0.0より大きいバージョンがインストールされます。

また、<>=<=の比較演算子を使用した場合も、その比較演算子が持つ意味通りのバージョンがインストールされます。


version1 - version2

範囲指定を行なうことができます。

version1 - version2と表記すると、>=version1 <=version2と同じ意味となります。

{

"dependencies": {
"foo": "1.0.1 - 1.2.0"
}
}

上記の場合は、1.1.0以上、1.2.0以下のバージョンがインストールされます。


X, *

X(もしくはx)や*をワイルドカードとして使うことができます。

{

"dependencies": {
"foo": "*", // どんなバージョンでもOK
"bar": "1.1.x", // >=1.1.0 and <1.2.0
"hoge": "1.X", // >=1.0.0 and <2.0.0
"huga": "" // "*"と同じことになる = どんなバージョンでもOK
}
}

4番目のhugaパッケージのように、バージョンを何も指定しないと、"*"の場合と同じ意味となります。


~version

Tilde(チルダ)記号を用いたときです。

versionのうち、minorバージョンが明記されている場合はpatchバージョン部分の更新ができ、そうでない場合はminorバージョンの更新がされます。

(バージョンの構成は major.minor.patch となっています。)

{

"dependencies": {
"foo": "~1.1.1", // >=1.1.1 and <1.2.0
"bar": "~1.1", // >=1.1.0 and <1.2.0
"hoge": "~1" // >=1.1.0 and <2.0.0
}
}


^version

Caret(キャレット)記号を用いたときです。

major.minor.patchのうち、一番左の0以外の数字のバージョンを更新しないような、更新が可能です。

{

"dependencies": {
"foo": "^1.1.1", // >=1.1.1 and <2.0.0
"bar": "^0.1.1", // >=0.1.1 and <0.2.0
"hoge": "^0.0.1" // >=0.0.1 and <0.0.2
}
}


公式サイト