【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のページを確認してください。

npm上のバージョン一覧の場所

バージョン指定の書き方

package.jsonにはパッケージのバージョンが書かれていますが、バージョンの頭につく記号によって意味が異なります。

表記意味
3.0.0完全一致するバージョン
^1.1.31.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の範囲内で最新版)
>33より新しい
>= 33か、それより新しい
<3より古い。パッケージの依存関係の都合がある場合に使う
<=3か、それより古い。パッケージの依存関係の都合がある場合に使う
1.2.xバージョン1.2の範囲で最新版
*バージョン制限なしで最新版。空文字列の場合も同等

これ以外の表現はほぼ使いません。実際には、*、不等号、.x表現以外を手書きすることはあまりないと思います。

バージョンを絞る理由

普通なら、安定版の最新バージョンを更新し続けるのが良いのではと思いますが、企業などで運用する場合はそうとは限りません。

  • 実際の環境で安定動作しているバージョンを使い続けたい
  • 皆の知識が使えるバージョンで使いたい
  • パッケージの依存関係の都合

特に1個目は重要です。自動的なバージョンアップにより、重大な障害が発生する可能性があります。そのため、更新するにしても脆弱性対応の時に手動で確認しながら更新する、リビジョンビルドだけ自動更新する、といった対応も多いです。

2つ目も、例えばbootstrap4と5では書き方が大きく異なるため、流用できません。その場合、知識がある4を使い続ける、といったこともあります。

まとめ

npmで導入する際は、しばしば最新ではなく1つ前の安定版のメジャーバージョンが導入される場合があります。

学習のためにβ版を使いたい等の場合、最初のnpm i ...するときのバージョン指定方法、特にタグ名での導入方法を知っておくと便利です。

npm version thumb

役に立ったらシェアしよう!