LoginSignup
181
139

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-07-28

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
  }
}

公式サイト

181
139
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
181
139