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

$ npm list
$ npm install
$ npm uninstall
$ npm test
$ npm run

npmは、Node.jsのパッケージ管理ツールです。 プロジェクトのpackage.jsonをもとに、依存パッケージのインストールや削除、スクリプトの実行などを行えます。

インストールしたい(node)

$ brew install node

$ node --version
v26.7.0

$ npm --version
11.19.0

$ npx --version
11.19.0

npmはHomebrewでインストールできます。 フォーミュラ名はnodeです。 nodeをインストールすると、npmとnpxも同時にインストールされます。

注釈

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

グローバル設定したい

$ npm install -g all-the-package-names
$ npm install -g npm-check-updates
$ npm install -g @google/clasp

-gオプションでグローバルにインストールしたパッケージは、プロジェクトを問わずコマンドとして使えるようになります。 CLIツールなど、複数のプロジェクトで共通して使いたいパッケージは、はじめにグローバルへ入れておくと便利です。

$ npm -g list --depth=0

-gオプションとlistコマンドを組み合わせると、グローバルにインストール済みのパッケージを確認できます。

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

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

$ ncu
$ ncu -u
$ npm install

claspは、Google Apps Scriptのプロジェクトをローカルで開発するためのCLIツールです。 パッケージ名は@google/claspです。

パッケージ設定したい(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はこのファイルを更新します。

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

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

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

注釈

比較的新しいNode.jsでは、typeを省略していても.jsファイルの中身がimport/export構文であれば、 警告を出しつつ自動的にESModuleとして解釈し直してくれる場合があります(require構文のファイルはそのままCommonJSとして動きます)。 ただし、この自動判定には実行時のオーバーヘッドがあるため、警告にしたがってtype: "module"を明示しておくのが安全です。

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

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

注意

enginesはデフォルトでは警告が出るだけで、インストール自体は止まりません。 バージョン違反時にnpm installを失敗させたい場合は、.npmrcにengine-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 install・npm 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

注釈

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

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

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

ヒント

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

パッケージの詳細を調べたい(npm view)

$ npm view パッケージ名
$ npm info パッケージ名

npm view(npm infoはそのエイリアス)で、パッケージのバージョンや依存関係、リポジトリのURLなどの詳細情報を確認できます。 インストール前にパッケージの中身を確認しておきたいときに使います。

注意

npmエコシステムでは、既存の人気パッケージの認証情報が乗っ取られたり、 タイポスクワッティング(似た名前の偽パッケージを紛れ込ませる手口)によって、 悪意のあるコードが配布されるサプライチェーン攻撃がたびたび発生しています。

見覚えのないパッケージや依存関係で入ってくるマイナーなパッケージを導入する前に、 npm view パッケージ名 maintainers time.createdなどでメンテナーや公開時期を確認するとよいです。 リポジトリのURLを開いて、実際のソースやスター数・Issueの様子を見ておくのも有効です。 npm auditで、既知の脆弱性が報告されているかも合わせて確認できます。

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

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

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

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

注釈

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

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

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

$ npm install --save-dev typescript
$ npm install --save-dev rollup
$ npm install --save-dev vitest
$ npm install --save-dev @biomejs/biome

--save-dev(-D)で、開発用の依存パッケージとしてインストールできます。 パッケージ名はpackage.jsonのdevDependenciesに記録されます。

テストツールやビルドツールなど、開発時にだけ必要でプロジェクトの実行には不要なパッケージに使います。

$ npx tsc --version
$ npx rollup --version
$ npx vitest --version
$ npx biome --version

上記はGoogle Apps Scriptの開発で実際に使っているパッケージをサンプルにしました。 ローカルにインストールしたパッケージはnpx経由で実行できます。

パッケージを削除したい(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が許容する最新バージョン・実際の最新バージョンが一覧表示されます。