Help us understand the problem. What is going on with this article?

【いまさらですが】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
  }
}

公式サイト

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away