🐷
npmパッケージのバージョン指定について
キャレット (Caret/^)
- キャレットは、互換性のある新しいバージョンを許可します。
- メジャーバージョンが 0 でない場合、指定したバージョンのメジャーバージョンが変更されない範囲で、マイナーおよびパッチバージョンのアップデートを許可します。
- メジャーバージョンが 0 の場合、マイナーバージョンが変更されない範囲で、パッチバージョンのアップデートを許可します。
- ^1.2.3 := >=1.2.3 <2.0.0
- ^0.2.3 := >=0.2.3 <0.3.0
- ^0.0.3 := >=0.0.3 <0.0.4
チルダ (Tilde/~)
- チルダは、指定されたバージョンのパッチバージョンのアップデートを許可します。
- 指定されたバージョンから始まる次のマイナーバージョン未満の範囲を許可します。
- ~1.2.3 := >=1.2.3 <1.3.0
- ~1.2 := >=1.2.0 <1.3.0
- ~1 := >=1.0.0 <2.0.0
まとめ
- キャレット (^) は、通常、より広い範囲のバージョンを許可し、互換性のある新しい機能が追加される可能性があります。
- チルダ (~) は、より狭い範囲のバージョンを許可し、通常はバグ修正のみを含むアップデートに焦点を当てます。
選択の指針
- キャレット (^)
- 互換性のある新機能を受け取りたいが、破壊的変更は避けたいとき。
- リリースサイクルが短く、頻繁に新機能や改善を取り入れたい場合。
- 開発時
- チルダ (~)
- 安定したパッチの更新を受け取りたいが、機能の追加や大きな変化を避けたいとき。
- リリースサイクルが短くても、安定性をある程度保ちたい場合。
- バージョン固定
- 確実に同じバージョンの動作を維持したいとき、特にプロダクション環境での動作を保証する必要がある場合。
- リリースサイクルが長い、またはリリース後にそのバージョンを変更しない場合。
Discussion