Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

package.json内のバージョン番号の書き方

f:id:overworker:20200927105912p:plain:h150

npm auditでバージョン更新する際のメモです。
以下の表記の違いについて記載します。

{{
  サンプル:{ 
    "a":"1.2.3",
    "b":"<1.2.3",
    "c":"<=1.2.3",
    "d":">1.2.3",
    "e":">=1.2.3",
    "f":"1.2.x",
    "g":"1.2.X",
    "h":"1.2.*",
    "i":"1.2.3-1.4.5",
    "j":"^1.2.3",
    "k":"~1.2.3",
  }
}

特徴的な記号

~ (チルダ) とは?

  • バージョン番号に~が添えられている場合、メジャーバージョンまでしか記載されていない場合と、マイナーバージョン以下が記載されている場合で振る舞いが変わります。
    • マイナーバージョンが指定されている場合、パッチレベルの変更を許可
    • メジャーバージョンまでが指定されている場合、マイナーレベルの変更を許可

      表記 更新の範囲 解釈
      ~1.2.3 1.2.3以上、1.(2+1).0未満 マイナーバージョン以下まで記載
      (パッチバージョンまで)
      ~1.2 1.2.0以上、1.(2+1).0未満 マイナーバージョン以下まで記載
      (マイナーバージョンまで)
      ~1 1.0.0以上、(1+1).0.0未満 メジャーバージョンまで記載
      ~0.2.3 0.2.3以上、0.(2+1).0未満 マイナーバージョン以下まで記載
      (パッチバージョンまで)
      ~0.2 0.2.0以上、0.(2+1).0未満 マイナーバージョン以下まで記載
      (マイナーバージョンまで)
      ~0 0.0.0以上、(0+1).0.0未満 メジャーバージョンまで記載

^ (キャレット) とは?

  • 0以外の左端の数字を変更しない範囲での更新を許可する。
    • 互換性がなくなる可能性があるバージョンアップ(メジャーバージョンアップ)を回避する範囲でバージョンアップが可能

      表記 更新の範囲 解釈
      ^1.2.3 1.2.3以上、2.0.0未満 メジャーバージョンアップしない範囲
      ^1.2. 1.2.0以上、2.0.0未満 メジャーバージョンアップしない範囲
      ^0.2.3 0.2.3以上、0.3.0未満 マイナーバージョンアップしない範囲
      ^0.2. 0.2.0以上、0.3.0未満 マイナーバージョンアップしない範囲

その他の記号

  • そこそこ登場しそうな表記をリスト化します。(感覚的に理解できると思いますが)

    表記 更新の範囲 解釈
    1.2.3 1.2.3 完全一致
    >1.2.3 1.2.3より新しい 不等号と一緒
    >=1.2.3 1.2.3以上 不等号と一緒
    <1.2.3 1.2.3未満 不等号と一緒
    <=1.2.3 1.2.3以下 不等号と一緒
    1.2.x 1.3.0未満 パッチバージョンがワイルドカード
    1.2.X 1.3.0未満 パッチバージョンがワイルドカード
    1.2.* 1.3.0未満 パッチバージョンがワイルドカード
    1.2.3 - 1.4.5 1.2.3以上、かつ1.4.5以下 範囲指定

公式ドキュメント

  • 参考文献として以下のドキュメントを記載します。

package.json

セマンテックバージョニングの基本

  • 公式サイト(、、、だと思う)
    • セマンティック バージョニング 2.0.0 | Semantic Versioning

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

      1. APIの変更に互換性のない場合はメジャーバージョンを、
      2. 後方互換性があり機能性を追加した場合はマイナーバージョンを、
      3. 後方互換性を伴うバグ修正をした場合はパッチバージョンを上げます。

      プレリリースやビルドナンバーなどのラベルに関しては、メジャー.マイナー.パッチ の形式を拡張する形で利用することができます。

その他

overworker.hatenablog.jp