LoginSignup
134

More than 5 years have passed since last update.

posted at

updated at

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

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

公式サイト

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
What you can do with signing up
134