package.jsonのdependenciesやdevDependenciesに依存するパッケージを指定することができます。
いまさらですが、そのパッケージの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
}
}