バージョン管理をマスターしよう!node.js、npm、package.jsonにおけるバージョン指定のすべて
node.js、npm、package.jsonにおけるチルダ(~)とキャレット(^)の違い
チルダ(~)記号は、指定されたマイナーバージョンまでのバージョンの範囲を許容します。 例えば、~1.2.3
と指定すると、1.2.3
から1.2.9
までのバージョンがインストールされます。
例
以下は、package.json
ファイルでチルダとキャレット記号を使用する例です。
{
"dependencies": {
"express": "~4.17.1",
"mongoose": "^5.13.0"
}
}
この例では、express
パッケージは4.17.1
から4.19.9
までのバージョンがインストールされ、mongoose
パッケージは5.13.0
から5.99.99
までのバージョンがインストールされます。
一般的には、以下のガイドラインに従って、チルダとキャレット記号を使い分けることができます。
- チルダ(~): 特定のマイナーバージョンと互換性を維持したい場合に使用します。
- キャレット(^): 最新のバージョンの機能を利用したい場合に使用します。
注意点
- チルダとキャレット記号は、セマンティック バージョニング (SemVer) に基づいて動作します。
- チルダとキャレット記号は、
package-lock.json
ファイルと併用することで、より詳細なバージョン管理を行うことができます。
{
"name": "my-app",
"version": "1.0.0",
"description": "My application",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "mocha"
},
"keywords": ["node", "express", "mongoose"],
"author": "Your Name",
"license": "ISC",
"dependencies": {
"express": "~4.17.1",
"mongoose": "^5.13.0"
}
}
このコードでは、以下の依存関係が定義されています。
express
パッケージ: バージョン4.17.1
から4.19.9
までのバージョンがインストールされます。
このコードを実行すると、node_modules
ディレクトリにexpress
とmongoose
パッケージがインストールされます。
実行
以下のコマンドを実行して、アプリケーションを起動できます。
npm start
出力
Express server listening on port 3000
- チルダとキャレット記号は、
npm install
コマンドの--save
オプションと併用することで、package.json
ファイルに自動的にバージョン情報が書き込まれます。 - チルダとキャレット記号は、
npm shrinkwrap
コマンドを使用して、依存関係のパッケージのバージョンを固定することができます。
バージョン指定のその他の方法
固定バージョン
特定のバージョンのパッケージをインストールするには、バージョン番号をそのまま指定します。 例えば、1.2.3
と指定すると、1.2.3
バージョンのパッケージがインストールされます。
バージョン範囲
比較演算子を使用して、バージョンを比較することもできます。 例えば、>=1.2.3
と指定すると、1.2.3
以上のバージョンがインストールされます。
以下は、package.json
ファイルでバージョンを指定するその他の方法の例です。
{
"dependencies": {
"express": "1.4.5",
"mongoose": "1.2.3 - 1.4.5",
"lodash": ">=4.17.15",
"moment": "^2.24.0",
"uuid": "*"
}
}
uuid
パッケージ: どのバージョンのパッケージでもインストールされます。
package.json
ファイルでバージョンを指定する方法はいくつかあります。 チルダ(~)とキャレット(^)記号は、最もよく使用される方法ですが、他の方法も状況に応じて使用することができます。
node.js npm package.json