npmとは? Node.jsのパッケージマネージャーを解説
npmはNode.jsの標準パッケージマネージャーです。プロジェクトが依存するライブラリをインストールし、buildやテストを行うスクリプトを実行します。
npm(Node Package Managerの略)はNode.jsに同梱されており、JavaScriptパッケージをインストールするための最も広く使われているツールです。プロジェクトのマニフェストを読み込み、各依存関係の適切なバージョンをダウンロードし、buildやテストのスクリプトを動かすコマンドrunnerを提供します。「npm install」を一度でも実行したことがあれば、あなたはすでにnpmを使っています。
npmとは何か
npmには3つの部分があります。コマンドラインツール、200万を超えるパッケージを持つオンラインレジストリ、そしてプロジェクトを記述するpackage.jsonというマニフェスト形式です。パッケージをインストールすると、npmはそれをレジストリ(デフォルトではregistry.npmjs.org)から取得し、そのパッケージ自身が依存するすべてとともにnode_modules配下に配置します。
どのように動作するか
依存関係はpackage.jsonで宣言します。解決された正確なバージョンはpackage-lock.jsonに固定され、npmがこれを書き出すことで、どのマシンでも同一のツリーがインストールされます。「npm install」を実行するとすべてを解決してダウンロードし、「npm ci」を実行すると再現可能なbuildのためにlockfileから厳密にインストールします。これが自動化における正しい選択です。
実例
典型的なプロジェクトはツール群とスクリプトをpackage.jsonで宣言し、npmを使ってそれらをインストールおよび実行します。
{
"name": "my-app",
"scripts": {
"test": "vitest run",
"build": "vite build"
},
"dependencies": { "react": "^18.0.0" }
}
# install and run a script
npm ci
npm run buildCI/CDでの役割
pipelineの中でnpmは依存関係を復元し、buildとテストのスクリプトを実行します。CIの定番コマンドは「npm ci」です。lockfileが指定するものを正確にインストールし、package.jsonとlockfileが食い違うと明確に失敗するためです。npmのcacheディレクトリを実行間でcacheすることで、変更のないパッケージの再ダウンロードを避け、あらゆるjobを高速化できます。
代替ツール
Yarnとpnpmは同じpackage.jsonを読む代替ツールです。pnpmはcontent-addressableなストアによって著しく高速でディスク効率が高く、Yarnはlockfileを先駆けて導入しPlug and Playを提供します。それでも多くのチームがまずnpmに手を伸ばすのは、追加のインストールが不要だからです。
重要なポイント
- npmはNode.jsに同梱されている標準のパッケージマネージャーです。
- package.jsonは依存関係とスクリプトを宣言し、package-lock.jsonは正確なバージョンを固定します。
- CIでは「npm ci」を使い、lockfileから高速で再現可能なインストールを行いましょう。