バージョン指定とsemver | パッケージのバージョン管理 | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

バージョン管理とは?

JavaScriptのプロジェクトでは、依存しているライブラリやパッケージのバージョンを適切に管理することが重要です。

パッケージは更新によって機能追加、バグ修正、仕様変更などが行われます。しかし、バージョンを意識せずに更新すると、今まで動いていたコードが突然動かなくなることがあります。

バージョン管理を適切に行うことで、予期しないエラーや互換性の問題を避け、プロジェクトを安定して運用できます。

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

JavaScriptのパッケージ管理でよく使われるバージョンの考え方が、semver(セマンティックバージョニング)です。

semverでは、バージョン番号をメジャーマイナーパッチの3つに分けて管理します。

バージョンの構成

semverは、次の形式で表されます。


MAJOR.MINOR.PATCH
  • MAJOR(メジャーバージョン):後方互換性を壊す変更が行われた場合に増えます。
  • MINOR(マイナーバージョン):後方互換性を保ったまま、新機能が追加された場合に増えます。
  • PATCH(パッチバージョン):後方互換性を保ったまま、バグ修正などが行われた場合に増えます。

semverの具体例


1.2.3

この場合、1がメジャーバージョン、2がマイナーバージョン、3がパッチバージョンです。

たとえば、1.2.3から1.2.4へ更新される場合は、主にバグ修正です。1.3.0へ更新される場合は、互換性を保った機能追加が含まれる可能性があります。2.0.0へ更新される場合は、破壊的変更が含まれる可能性があります。

バージョン指定の方法

npmでパッケージをインストールするときは、特定のバージョンやバージョン範囲を指定できます。

特定のバージョンを指定する例


npm install lodash@4.17.21

このコマンドでは、lodash4.17.21を指定してインストールします。

特定のバージョンで動作確認したい場合や、バージョンを固定したい場合に使います。

バージョン範囲を指定する例

npmでは、記号を使ってインストール可能なバージョン範囲を指定できます。

  • ^:メジャーバージョンを固定し、マイナー・パッチの更新を許可します。
  • ~:メジャー・マイナーを固定し、パッチの更新を許可します。

バージョン範囲の例


npm install lodash@^4.0.0

この例では、lodash4.x.x系のバージョンが許可されます。

^4.0.0は、メジャーバージョンが4の範囲で更新を許可しますが、5.0.0のようなメジャーバージョンの更新は許可しません。

バージョン指定の記号一覧

記号 説明
^ メジャーバージョンを固定し、マイナー・パッチの更新を許可します。
~ メジャー・マイナーを固定し、パッチの更新を許可します。
> 指定バージョンより新しいバージョンを許可します。
>= 指定バージョン以上を許可します。
< 指定バージョンより古いバージョンを許可します。
<= 指定バージョン以下を許可します。
指定なし 通常は最新の安定版がインストールされます。

package.jsonとpackage-lock.json

npmでバージョン管理を行ううえで重要なのが、package.jsonpackage-lock.jsonです。

ファイル 役割
package.json プロジェクトが依存しているパッケージや、許可するバージョン範囲を記録します。
package-lock.json 実際にインストールされたパッケージの正確なバージョンを記録します。

package.json^~が書かれている場合でも、package-lock.jsonがあることで、同じ環境を再現しやすくなります。

チーム開発では、package-lock.jsonも基本的にGitなどで管理することが重要です。

バージョンの安定性

バージョン番号を見ると、パッケージの安定性をある程度判断できます。

一般的に、メジャーバージョンが0のパッケージは、まだ開発初期段階であることを示す場合があります。


0.5.2

このような0.x.xのバージョンでは、マイナーアップデートでも破壊的変更が含まれる可能性があります。

そのため、重要なプロジェクトで利用する場合は、更新内容やリリースノートを確認してから導入すると安全です。

パッケージ情報の確認

パッケージの情報を確認するには、npm infoコマンドを使用します。


npm info lodash

このコマンドを実行すると、パッケージの最新バージョンや説明、依存関係などを確認できます。

バージョン管理で注意したいこと

  • むやみに最新バージョンへ更新しない。
  • メジャーバージョン更新では破壊的変更に注意する。
  • package-lock.jsonを削除しない。
  • 更新前にリリースノートを確認する。
  • 更新後はテストを実行して動作確認する。

特に本番環境で使うプロジェクトでは、パッケージ更新による影響を確認してから反映することが重要です。

初心者が覚えておきたいポイント

  • semverはMAJOR.MINOR.PATCHの形式で表されます。
  • メジャーバージョンの更新は、互換性が壊れる可能性があります。
  • ^はマイナー・パッチ更新を許可します。
  • ~はパッチ更新を許可します。
  • package-lock.jsonは、実際に使われた正確なバージョンを記録します。
  • パッケージ更新後は、必ず動作確認やテストを行いましょう。

まとめ

  • バージョン管理は、JavaScriptプロジェクトを安定して運用するために重要である。
  • semverはMAJOR.MINOR.PATCHの形式でバージョンを表す。
  • メジャーは破壊的変更、マイナーは機能追加、パッチはバグ修正を示す。
  • ^~を使うと、許可する更新範囲を指定できる。
  • package.jsonpackage-lock.jsonの役割を理解することが重要である。
  • 更新時はリリースノートやテスト結果を確認し、安全に管理しよう。