メインコンテンツへ移動

意味的バージョニング(Semantic Versioning)

無料2016-05-30#Node#semver#package版本号#npm包版本号

npm package の各種バージョン番号の意味

一.フォーマット

バージョン番号は MAJOR.MINOR.PATCH。ドットは区切り文字:

  • MAJOR。互換性のない API 変更を行った

  • MINOR。後方互換性のある新機能を追加した

  • PATCH。後方互換性のあるバグ修正を行った

したがって、一般に依存 package のメジャーバージョン(MAJOR)は更新しない

二.範囲

依存関係の管理に使用。ターゲット package のバージョン範囲を宣言し、依存関係の自動更新をサポート

  • * | x | X

    利用可能な任意のバージョンを受け入れる。デフォルトで最新を取得。使用しないこと。メジャーバージョンの更新はバグを引き起こす可能性がある

  • MAJOR | MAJOR.MINOR

    それぞれ <m+1<m.n+1 を表す。\* または xm.x.x | m.n.*)でも同じ範囲を表現可能

  • -,<,<=,> と >=

    m.n.p - M.N.P>=m.n.p かつ <=M.N.P を表す

  • ~

    ~m.n.p>=m.n.p かつ <m.n+1.0 を表す

  • ^

    ^m.n.p>=m.n.p かつ <m+1.0.0 を表す

  • 0.n.p

    メジャーバージョン番号が 0 は初期開発段階にあることを表す。すべてのものがいつでも変動する可能性がある。MINOR と PATCH は意味がない。此时*^ プレフィックスは無効*。^0.n.p0.n.p と等価。~ プレフィックスは依然有効

三.注意事項

意味的バージョニングは開発環境でのみ使用。つまり、意味的バージョニングがバグを本番環境に導入することを心配する必要があるなら、使い方が間違っていることを示す。

開発環境でのみ使用する具体的な方法は以下の通り:

  • package.json の "bundledDependencies" で依存関係をパッケ��ジ化

  • npm shrinkwrap 命令で特定時点の依存階層構造のスナップショットを作成

  • 依存関係的应用と一緒にバージョン管理(git など)に追加

四.テスト版について

Alpha、Beta、Gamma はα、β、λ と同音。ギリシャ文字の最初の 3 文字。ソフトウェア開発プロセス中のテストの 3 つの段階を表す:

  • Alpha

    内部テスト版。内部交流または専門テスト人員のテスト用

  • Beta

    公開テスト版。専門愛好家が大規模にテスト用。いくつかの欠陥が存在。このバージョンは一般ユーザーのインストールに適さない

  • Gamma

    比較的成熟したテスト版。まもなくリリースされる正式版とほとんど変わらない

  • RC

    Release Candidate の略。リリースカウントダウンを意味。候補バージョン。Gamma 段階に位置。このバージョンはすべての機能を完了し、大部分の BUG をクリア。この段階になると BUG を除去するだけで、ソフトウェアに大きな変更を加えない。Alpha から Beta から Gamma は改善の先後関係。しかし RC1、RC2 は往々にして取舍関係

  • Stable

    安定版。オープンソースソフトウェアにはすべて stable 版がある。これがオープンソースソフトウェアの安定発行版(Node についてはこのようではない。詳細は [Windows/Linux 下 Node 更新](/articles/windowslinux 下 node 更新/) を参照)

範囲 >1.2.3-alpha.3 に対して、バージョン 1.2.3-alpha.7 は条件に合致。しかし 3.4.5-alpha.9 は条件を満足しない。3.4.5-alpha.9 は実際には 1.2.3-alpha.3 より大きいが、SemVer のソートルールに従うと、このバージョン範囲は 1.2.3 のテスト版のみを受け入れ、他のバージョンのテスト版は受け入れない。もちろん 3.4.5 は条件を満足。テスト版ではなく、1.2.3-alpha.7 より大きいため

このようにする目的は 2 つある。まずテスト版は頻繁に更新され、公開に適さない重大な変更を含む可能性がある。そのため範囲から除外される。さらに、ユーザーが明確にリスクのあるテストバージョンを使用すると指定しても、次バージョンのテスト版が含まれるのは依然として不適切

五.まとめ

固定バージョン番号の依存関係を使用しない。パッチ(PATCH)更新は既存のバグを修正する可能性がある。一般に 3 種類ある:

  • 慎重に依存バージョンを制御:^ プレフィックスを使用。パッチバージョンのみを更新。メジャーバージョンとマイナーバージョンは追従しない。更新が頻繁でない 安定傾向のプロジェクトに適す(should など)

  • 少し緩く:~ プレフィックスを使用。メジャーバージョンは追従しない。マイナーバージョンとパッチのみを更新。長期に頻繁に更新 される大プロジェクトに適す(express など)

  • 最も緩い:* プレフィックスを使用。最新バージョンを取得。個人の小プロジェクト、実験的なプロジェクトに適す(myproj など)

参考資料

コメント

コメントはまだありません

コメントを書く