当サイトは、アフィリエイト広告を利用しています

package.jsonのキャレット(^)やチルダ(~)について

作成日:2022月10月06日
更新日:2023年12月04日

npmまたはyarnを使用してpackageをインストールすると
package.jsonが作成される。
インストールしたpackageのversionにつくキャレット(^)やチルダ(~)に
ついて調べてみたことまとめる

セマンティック バージョン=Semver (Semantic Versioning)とは?

インストールしたpackageのversionはセマンティック バージョンニングという
APIのバージョンの付け方に関するルールに元づいて書かれている。
例えば下記のような場合は

package.json
"dependencies": {
"gatsby": "4.23.1",
},
  • メジャーバージョンは4
  • マイナーバージョンは23
  • パッチバージョンは4

ということになる。
それぞれのバージョンの意味は下記引用参照

バージョンナンバーは、メジャー.マイナー.パッチ とし、バージョンを上げるには、

  1. APIの変更に互換性のない場合はメジャーバージョンを、
  2. 後方互換性があり機能性を追加した場合はマイナーバージョンを、
  3. 後方互換性を伴うバグ修正をした場合はパッチバージョンを上げます。 プレリリースやビルドナンバーなどのラベルに関しては、メジャー.マイナー.パッチ の形式を拡張する形で利用することができます。

https://semver.org/lang/ja/

キャレット^やチルダ~とは?

packageのverisonのsemverにチルダ^やキャレット~をつけることで
そのパッケージのアップデートが可能な範囲を指定することができる

無印

無印の場合はバージョン固定となる。
「yarn upgrade」や「yarn install」した場合記載のversionがインストールされる

package.json
"dependencies": {
"gatsby": "4.23.1",
},

キャレット(^)

キャレットがついているの場合はメジャーバージョンが固定となる

package.json
"dependencies": {
"gatsby": "^4.23.1",
},

マイナーバージョンとパッチバージョンに最新があれば
「yarn upgrade」や「yarn install」した際に下記のように最新に更新される

package.json
"dependencies": {
"gatsby": "^4.24.2",
},

※yarn upgradeの場合はpackage.jsonは更新されず、yarn.lockが更新される

別の書き方

xを使って下記のように書けばキャレットをつけたのと同じ意味になる

package.json
"dependencies": {
"gatsby": "4.x.x",
},

チルダ(~)

チルダがついているの場合はメジャーバージョン、マイナーバージョンが固定となる

package.json
"dependencies": {
"gatsby": "~4.23.1",
},

パッチバージョンに最新があれば
「yarn upgrade」や「yarn install」した際に下記のように最新に更新される

package.json
"dependencies": {
"gatsby": "~4.23.2",
},

※yarn upgradeの場合はpackage.jsonは更新されず、yarn.lockが更新される

別の書き方

xを使って下記のように書けばチルダをつけたのと同じ意味になる

package.json
"dependencies": {
"gatsby": "4.23.x",
},

アスタリスク(*)

アスタリスクがついている場合はすべてのバージョンが更新される

package.json
"dependencies": {
"gatsby": "*"
},

または

package.json
"dependencies": {
"gatsby": ""
},

空白の場合もアスタリスクと同じ扱い

バージョンに最新があれば
「yarn upgrade」や「yarn install」した際に最新に更新される ※yarn upgradeの場合はpackage.jsonは更新されず、yarn.lockが更新される

まとめ

プロジェクトにインストールされているpackageのversionを上げる際に

  • yarn upgrade
  • yarn upgrade-interactive
  • yarn upgrade-interactive --latest

を使う場合はpackageについているチルダやキャレットで実行結果が変わるので
覚えておいた方がよさそうです。

packageのアップデート方法については下記の記事でまとめています。

参考

下記を参考にさせて頂きました

新着記事

タグ別一覧
top