Skip to content
Latchkey

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を使ってそれらをインストールおよび実行します。

package.json plus npm commands
{
  "name": "my-app",
  "scripts": {
    "test": "vitest run",
    "build": "vite build"
  },
  "dependencies": { "react": "^18.0.0" }
}

# install and run a script
npm ci
npm run build

CI/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から高速で再現可能なインストールを行いましょう。

関連ガイド