バージョンバンプ計算

Major
1.0.0 → 2.0.0
破壊的変更。API非互換。
Minor
1.4.0 → 1.5.0
新機能追加。後方互換あり。
Patch
1.4.2 → 1.4.3
バグ修正。新機能なし。

バージョン範囲チェッカー

よく使う範囲:
^1.0.0 ~1.4.2 >=1.0.0 <2.0.0 1.x * (すべて)

バージョン履歴 — バンプシミュレーション

セマンティックバージョニングとは?

セマンティックバージョニング(SemVer)は、MAJOR.MINOR.PATCH(例: 2.4.1)という3つの数字形式を使用するバージョニング仕様です。各リリースの変更内容を標準的な方法で伝え、依存関係を更新する際に何を期待すべきかを開発者が理解できるようにします。

SemVer仕様(semver.org)では明確なルールが定義されています:破壊的変更にはMAJORを、後方互換のある新機能にはMINORを、後方互換のあるバグ修正にはPATCHをそれぞれインクリメントします。

各バージョンパートをバンプするタイミング

  • MAJOR(破壊的変更): パブリックAPIメソッドの削除、関数シグネチャの変更、非推奨機能の削除、認証フローの変更。
  • MINOR(新機能): 新しいエンドポイントの追加、既存関数へのオプショナルパラメータの追加、新しい設定オプションの追加。
  • PATCH(バグ修正): クラッシュの修正、不正な動作の修正、APIに変更のないパフォーマンス改善、ドキュメントの修正。

npmバージョン範囲構文

  • ^1.2.3 — 1.2.3と互換。MINORとPATCHのアップデートを許可(>=1.2.3 <2.0.0)
  • ~1.2.3 — ほぼ等価。PATCHアップデートのみ許可(>=1.2.3 <1.3.0)
  • >=1.2.3 <2.0.0 — 明示的な範囲、意図が非常に明確
  • 1.x — メジャーバージョン1のすべてのバージョン
  • * — すべてのバージョン(本番環境では危険)
  • 1.2.3 — 完全一致のみ(アップデートなし)

セマンティックバージョニングに関するよくある質問

npmの ^1.0.0 と ~1.0.0 の違いは?

キャレット(^)は同じメジャーバージョン内の互換性のあるアップデートを許可します。^1.0.0>=1.0.0 かつ <2.0.0 のバージョンを受け入れ、minorとpatchの両方のアップデートを許可します。チルダ(~)はより厳密で、~1.0.0>=1.0.0 かつ <1.1.0 にマッチし、patchアップデートのみ許可します。npmはデフォルトでキャレット(^)を使用します。インストールされるバージョンをより厳密に制御したい場合はチルダを使用してください。

メジャーバージョン番号を上げるべきタイミングは?

メジャーバージョン(例: 1.x.x → 2.0.0)を上げるのは、前バージョンとの後方互換性がない破壊的変更がある場合のみです。これには、パブリックAPIメソッドの削除や名前変更、関数のパラメータシグネチャの変更、以前サポートしていたランタイムや環境のサポート終了、既存の統合を壊すデフォルト動作の変更が含まれます。破壊的でない追加は常にminorに、バグ修正は常にpatchに含まれます。

0から始まるバージョン番号の意味は?

0から始まるバージョン(例: 0.x.x)は、ソフトウェアが初期開発段階にあり、パブリックAPIがまだ安定していないことを示します。SemVerの仕様では、0.x開発中はいつでも何でも変更される可能性があります — minorバージョンのバンプ(0.1.0 → 0.2.0)でも破壊的変更が含まれることがあります。後方互換性を維持する安定した文書化されたパブリックAPIをコミットする準備ができたら1.0.0に上げてください。

SemVerでプレリリースバージョンをリリースするには?

ハイフンの後にプレリリース識別子を追加します:1.0.0-alpha.11.0.0-beta.21.0.0-rc.1。プレリリースバージョンはリリースより優先度が低くなります:1.0.0-alpha < 1.0.0-beta < 1.0.0-rc.1 < 1.0.0。npmでは npm publish --tag next を使ってパブリッシュすることで、デフォルトではインストールされなくなります。キャレットやチルダの範囲セレクタはプレリリースバージョンに自動的にはマッチしません。

関連する開発者ツール