npm パッケージ バージョン 確認
インストールされたnpmパッケージのバージョンを確認する
Node.jsのプロジェクトでは、さまざまな機能を提供する外部のパッケージ(モジュール)を利用することが一般的です。これらのパッケージはnpm(Node Package Manager)を使用して管理されます。インストールされたパッケージのバージョンを確認することは、プロジェクトの依存関係管理やトラブルシューティングに重要です。
方法
npmコマンドを使用して、インストールされたパッケージのバージョンを確認することができます。
ローカルにインストールされたパッケージのバージョンを確認する
プロジェクトのルートディレクトリで以下のコマンドを実行します。
npm list
これにより、プロジェクト内で使用されているパッケージとそのバージョンが表示されます。特定のパッケージのバージョンだけを確認したい場合は、次のようにします。
npm list <パッケージ名>
システム全体で使用可能なパッケージのバージョンを確認するには、次のコマンドを使用します。
npm list -g <パッケージ名>
例
例えば、プロジェクトにインストールされている express
パッケージのバージョンを確認したい場合、以下のコマンドを実行します。
npm list express
これにより、express
パッケージのバージョンが出力されます。
備考
- パッケージのバージョンは、プロジェクトの
package.json
ファイルに記載されています。このファイルは、プロジェクトの依存関係を管理するために使用されます。 npm list
コマンドには、多くのオプションがあります。詳細については、npmのドキュメントを参照してください。
npm list コマンドによる確認
コマンド
npm list <パッケージ名>
解説
- <パッケージ名>
確認したいパッケージの正確な名前を指定します。 - npm list
インストールされたパッケージの一覧を表示するコマンドです。
例
npm list express
このコマンドを実行すると、express
パッケージのバージョン、依存関係にあるパッケージとそのバージョンなどが表示されます。
Node.jsプログラムからの確認 (require() と package.json)
コード
const { version } = require('express');
console.log(`Expressのバージョン: ${version}`);
- require('express')
express
モジュールを読み込みます。 - version
express
モジュールがエクスポートするversion
プロパティに、インストールされたexpress
のバージョンが格納されています。 - console.log
バージョンをコンソールに出力します。
package.json
package.json
ファイルには、プロジェクトで使用されているパッケージとそのバージョンが記述されています。このファイルから、インストールされたパッケージのバージョンをプログラム的に取得することも可能です。
const packageJson = require('./package.json');
console.log(`expressのバージョン: ${packageJson.dependencies.express}`);
- require('./package.json')
package.json
ファイルの内容をJavaScriptオブジェクトとして読み込みます。 - packageJson.dependencies.express
package.json
ファイルのdependencies
オブジェクトから、express
パッケージのバージョンを取得します。
npm programmatic API (npm パッケージ)
const npm = require('npm');
npm.load({}, (err) => {
if (err) return console.error(err);
npm.commands.view(['express', 'version'], true, (err, data) => {
if (err) return console.error(err);
console.log(`expressのバージョン: ${data.versions[0]}`);
});
});
- data.versions[0]
取得した情報から、最初のバージョン(通常は最新バージョン)を取得します。 - npm.commands.view
指定したパッケージの情報を取得するコマンドです。 - npm.load
npmの設定を読み込みます。 - npm
npmのコマンドラインインターフェースをプログラムから操作するためのモジュールです。
- npm programmatic API
npmのコマンドをプログラムから直接呼び出す。 - Node.jsプログラム
プログラム内で動的にバージョンを取得する。 - npm list
コマンドラインで手軽にバージョンを確認する。
どの方法を選ぶかは、以下の要素によって異なります。
- 柔軟性
npmのコマンドを自由にカスタマイズしたいか - 情報の利用方法
バージョンをログに出力するだけか、他の処理に利用するか - 確認のタイミング
コマンドラインか、プログラム実行時か
npm outdated
コマンドを使用すると、インストールされたパッケージの最新バージョンと比較し、アップデートが必要なパッケージを確認できます。- 上記のコードは簡略化されており、エラー処理や詳細なオプションについては、npmの公式ドキュメントを参照してください。
npm パッケージのバージョン確認:代替方法
これまで、npm パッケージのバージョンを確認する一般的な方法として、npm list
コマンドや Node.js の require()
を使った方法、そして npm のプログラム的な API を利用する方法をご紹介しました。
これらの方法に加えて、より詳細な情報や特定の状況下で便利な、いくつかの代替方法が存在します。
package.json ファイルの直接解析
- デメリット
package.json
ファイルの構造に依存するため、カスタムな設定をしている場合に誤った結果が出る可能性がある。 - メリット
シンプルで高速。
const fs = require('fs');
const packageJson = JSON.parse(fs.readFileSync('package.json'));
console.log('expressのバージョン:', packageJson.dependencies.express);
npm view コマンド
- デメリット
ネットワーク接続が必要。 - メリット
パッケージレジストリから直接情報を取り出すため、ローカル環境に依存しない。
npm view express version
npm outdated コマンド
- デメリット
全てのパッケージの情報を表示するため、大規模なプロジェクトでは出力結果が膨大になる可能性がある。 - メリット
インストールされたパッケージの最新バージョンとの比較もできる。
npm outdated
npm のプログラム的な API (詳細なオプション)
- デメリット
学習コストが高い。 - メリット
npm の機能を自由に組み合わせることができる。
const npm = require('npm');
npm.load({}, (err) => {
if (err) return console.error(err);
npm.commands.view(['express'], true, (err, data) => {
if (err) return console.error(err);
console.log(data.versions); // 全てのバージョンを表示
});
});
- lint-staged
Git のステージングエリアにあるファイルに対して、linter やフォーマッターを実行するツール。パッケージのバージョンチェックにも利用できる。 - npm-check-updates
パッケージのアップデートを容易にするツール。
どの方法を選ぶべきか?
- 大規模プロジェクト
npm-check-updates
やlint-staged
などのツール - プログラムからの利用
Node.js のrequire()
や npm のプログラム的な API - アップデートの確認
npm outdated
コマンド - 迅速な確認
npm list
コマンド
選択のポイント
- 頻度
どのくらいの頻度で確認するのか - 規模
プロジェクトの規模 - 環境
コマンドライン、Node.js プログラム、CI/CD パイプラインなど - 目的
何を知りたいのか? (バージョン、最新バージョンとの比較など)
node.js package npm