【npm】 バージョン指定の種類
管理するパッケージは、package.jsonでどの範囲のバージョンを利用するか指定できます。
インストール時に指定する
パッケージ名のあとに@
とバージョン番号を付けると、バージョンを指定できます。
npm i vue@3
@
の後につけるバージョンは、細かいバージョンの値を省略することができます。
例えば、3.2.0
~3.2.30
があったとすると、npm i vue@3
とすれば3.x
の最新版が, 3.2.0
とすれば3.2.0
を導入できます。基本的には、導入時はメジャーバージョンだけ指定することが一般的です。
1.2.3
という表現があったとすると、左はメジャーバージョン、中央はマイナーバージョン、右はリビジョンビルドといいます。
メジャーバージョンは数字的にも分かる通り、これが更新されると大規模な機能追加や仕様変更が考えられます。
また、@
の後にはタグ名を指定でき、指定なしならlatest
が導入されます。新機能を搭載したベータ版や開発版が欲しい場合、@next
や@beta
のように指定する必要があります。各タグはnpmのVersions
のページを確認してください。

バージョン指定の書き方
package.json
にはパッケージのバージョンが書かれていますが、バージョンの頭につく記号によって意味が異なります。
表記 | 意味 |
---|---|
3.0.0 | 完全一致するバージョン |
^1.1.3 | 1.1.3 <= 導入バージョン < 2.0.0 の範囲で最新版 |
~2.0.1 | ~2.0.1 の場合, ~2.0.1 <= 導入バージョン < 2.1.0 ~2.0 の場合, 2.0.x (つまり, 2.0 の範囲内で最新版)~2 の場合, 2.x (つまり, 2 の範囲内で最新版) |
>3 | 3 より新しい |
>= 3 | 3 か、それより新しい |
< | 3 より古い。パッケージの依存関係の都合がある場合に使う |
<= | 3 か、それより古い。パッケージの依存関係の都合がある場合に使う |
1.2.x | バージョン1.2 の範囲で最新版 |
* | バージョン制限なしで最新版。空文字列の場合も同等 |
これ以外の表現はほぼ使いません。実際には、*
、不等号、.x
表現以外を手書きすることはあまりないと思います。
バージョンを絞る理由
普通なら、安定版の最新バージョンを更新し続けるのが良いのではと思いますが、企業などで運用する場合はそうとは限りません。
- 実際の環境で安定動作しているバージョンを使い続けたい
- 皆の知識が使えるバージョンで使いたい
- パッケージの依存関係の都合
特に1個目は重要です。自動的なバージョンアップにより、重大な障害が発生する可能性があります。そのため、更新するにしても脆弱性対応の時に手動で確認しながら更新する、リビジョンビルドだけ自動更新する、といった対応も多いです。
2つ目も、例えばbootstrap4と5では書き方が大きく異なるため、流用できません。その場合、知識がある4を使い続ける、といったこともあります。
まとめ
npmで導入する際は、しばしば最新ではなく1つ前の安定版のメジャーバージョンが導入される場合があります。
学習のためにβ版を使いたい等の場合、最初のnpm i ...
するときのバージョン指定方法、特にタグ名での導入方法を知っておくと便利です。
