パッケージ管理したい(npm

$ brew install node

$ node --version
v26.7.0

$ npm --version
11.19.0

$ npx --version
11.19.0

npmコマンドを使ってNodeパッケージを管理できます。 一時的にパッケージを利用するためのnpxコマンドもあります。

注釈

npxコマンドを使うにはネットワーク環境が必要です。

パッケージを追加したい(npm install

$ npm install パッケージ名
$ npm -g install パッケージ名

installコマンドでパッケージを追加できます。 追加したパッケージはpackage.jsonにも追記され、プロジェクト内の管理に利用できます。

-gオプションを使ってグローバルにインストールできます。 グローバルにインストールしたパッケージはPCのどこからでもコマンドとして使えるようになり、 プロジェクトごとにインストールしなおす必要がなくなります。 一方、プロジェクトごとにバージョンを固定したいパッケージ(typescriptrollupなど)は、 -gを付けずにローカルへインストールするのが基本です。

注釈

-gオプションをつける位置は、npmのあとでも、installのあとでもよいです。

$ npm -g install パッケージ名
$ npm install -g パッケージ名

開発用としてインストールしたい(--save-dev

$ npm install --save-dev パッケージ名
$ npm install -D パッケージ名

--save-dev-D)オプションを付けると、package.jsondevDependenciesにパッケージが記録されます。 テストツールやビルドツールなど、開発時にだけ必要でプロジェクトの実行には不要なパッケージに使います。

パッケージを削除したい(npm uninstall

$ npm uninstall パッケージ名
$ npm -g uninstall パッケージ名

uninstallコマンドでパッケージを削除できます。 installと同じように-gを付けると、グローバルにインストールしたパッケージを削除できます。

インストール済みのパッケージを確認したい(npm list

$ npm list
$ npm list --depth=0
$ npm -g list --depth=0

listコマンドで、インストール済みのパッケージを確認できます。 依存関係も含めてすべて表示されるため、直接インストールしたパッケージだけを見たい場合は--depth=0を付けます。

パッケージの更新を確認したい(npm outdated

$ npm outdated

outdatedコマンドで、インストール済みのパッケージに新しいバージョンがあるかを確認できます。 現在のバージョン・package.jsonが許容する最新バージョン・実際の最新バージョンが一覧表示されます。

オススメのパッケージ

$ npm -g install all-the-package-names
$ npm -g install npm-check-updates

all-the-package-namesを追加すると、 インストール時にパッケージ名を補完してくれるようになります。

npm-check-updatesを追加すると、 npm outdatedよりも簡単に、package.jsonごと最新バージョンへ一括更新できるようになります。

$ ncu
$ ncu -u
$ npm install

これらのパッケージは、グローバルに追加しておくとよいです。

パッケージ設定したい(package.json

{
    "name": "my-project",
    "version": "0.0.1",
    "private": true,
    "type": "module",
    "engines": {
        "node": ">=20"
    },
    "packageManager": "npm@11.19.0",
    "dependencies": {},
    "devDependencies": {}
}

package.jsonは、プロジェクトの設定と依存パッケージをまとめて管理するファイルです。 npm initを実行すると自動生成され、以降のnpm installはこのファイルを更新します。

nameversionはプロジェクトの名前とバージョンです。 npmパッケージとして公開する予定がなければ、あまり気にしなくてよい項目です。

private: trueは、誤ってnpm publishで公開してしまわないようにするための安全装置です。

type: "module"は、.jsファイルをESModule(import/export)として扱う指定です。 省略した場合はCommonJS(require)として扱われます。

dependenciesにはnpm install(オプションなし)でインストールしたパッケージ、 devDependenciesにはnpm install --save-devでインストールしたパッケージが記録されます。 npm installだけを実行すると、これらの一覧をもとにnode_modulesが再現されます。

enginesは、動作確認済みのNode.jsバージョンを示すための項目です。

注意

enginesはデフォルトでは警告が出るだけで、インストール自体は止まりません。 バージョン違反時にnpm installを失敗させたい場合は、.npmrcengine-strict=trueを追加する必要があります。

packageManagerは、npm(やyarn/pnpm)自体のバージョンを固定するための項目です。 corepack enableを実行しておくと、corepackがこのバージョンを見て自動的にダウンロード・切り替えしてくれます。

注釈

corepackはNode.js 20/22 LTSには同梱されていますが、 Node.js 25以降は同梱されなくなったため、npm install -g corepackで別途インストールが必要になる場合があります。

ヒント

package.jsonは手で編集してもよいですが、 npm installnpm uninstallのようなコマンド経由で更新していくほうが、 書き間違いも減り安全です。

スクリプト設定したい(package.json

{
    "name": "my-project",
    "scripts": {
        "build": "tsc",
        "test": "vitest run",
        "lint": "eslint .",
        "start": "node index.js"
    }
}

scriptsフィールドに、よく使うコマンドを短い名前で登録しておけます。 登録したスクリプトはnpm run <スクリプト名>で実行できます。

$ npm run build
$ npm run test
$ npm run lint

注釈

teststartstoprestartの4つは特別扱いされていて、 npm runを省略してnpm testnpm startのように実行できます。 それ以外のスクリプト名はnpm runが必須です。

&&でつなげると、複数のスクリプトを順番に実行するスクリプトも作れます。

{
    "scripts": {
        "build": "tsc",
        "test": "vitest run",
        "ci": "npm run build && npm run test"
    }
}

ヒント

同じコマンドを何度も打つより、目的ごとにscriptsへ登録しておくと、 チームメンバー間でも実行方法を揃えやすくなります。 プロジェクトによって内部の実装(tscbabelか、jestvitestか)が違っても、 npm run buildnpm testという呼び出し方だけ覚えておけば済むようになります。