🐷

npmパッケージのバージョン指定について

2024/11/19に公開

キャレット (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

まとめ

  • キャレット (^) は、通常、より広い範囲のバージョンを許可し、互換性のある新しい機能が追加される可能性があります。
  • チルダ (~) は、より狭い範囲のバージョンを許可し、通常はバグ修正のみを含むアップデートに焦点を当てます。

選択の指針

  • キャレット (^)
    • 互換性のある新機能を受け取りたいが、破壊的変更は避けたいとき。
    • リリースサイクルが短く、頻繁に新機能や改善を取り入れたい場合。
    • 開発時
  • チルダ (~)
    • 安定したパッチの更新を受け取りたいが、機能の追加や大きな変化を避けたいとき。
    • リリースサイクルが短くても、安定性をある程度保ちたい場合。
  • バージョン固定
    • 確実に同じバージョンの動作を維持したいとき、特にプロダクション環境での動作を保証する必要がある場合。
    • リリースサイクルが長い、またはリリース後にそのバージョンを変更しない場合。
GitHubで編集を提案

Discussion