メモです。
laravel の composer.jsonやcomposer.lock、node の package.jsonやpackage-lock.jsonなどで、バージョンの範囲指定に使われている、「~(チルダ)」や「^(キャレット)」の意味です。
チルダの意味
以下のnodeのバージョン記事に説明されています。
こちらによると、
「マイナーバージョンが指定されていたら、パッチレベルの更新を許可します。マイナーバージョンが指定されていなかったらマイナーバージョンの更新を許可します。」
と説明があります。
まず、バージョンは、3つの数字をピリオドでつなげますが、それぞれ、
メジャーバージョン.マイナーバージョン.パッチレベル
を意味します。
例として、以下のようになります。
- ~1.2.3 : 1.2.3 から 1.3 未満まで。1.2.2は範囲外
- ~1.2:1.2から1.3未満まで。
- ~1:1から2未満まで。マイナーバージョンの指定がないので、マイナーバージョンの更新が許可となります。
キャレットの意味
上記の記事には以下のように説明されています。
「メジャーバージョン、マイナーバージョン、パッチレベルの内、ゼロじゃない一番左側の数字を変えない更新を許可する。」
こちらのほうがわかりやすいですね。
例として以下のようになります。
- ^1.2.3:1.2.3から2未満まで
- ^0.2.3:0.2.3から0.3未満まで
- ^0.0.3:0.0.3から0.0.4未満まで
- ^0.0:0.0から0.1未満まで。ゼロ以外がない場合、すべての数字を変更しない更新だけ許可するという意味になります。
コメント