npm は Node.js の公式パッケージマネージャで、パッケージのインストール/更新/削除や、package.json に定義した スクリプトの実行、公開・設定管理を行います。
実務では依存関係の固定(package-lock.json)、CIでの再現性インストール(npm ci)、モノレポ/ワークスペース運用などに用います。
構文(Syntax)
npm [GLOBAL_OPTIONS] <command> [ARGS] [-- COMMAND_ARGS]
# 代表的なコマンド
npm init [-y] # package.json を作成
npm install|i [PKG[@VER]...] # 依存を追加(未指定なら package.json に基づきインストール)
npm ci # lockfile に厳密に従ってクリーンインストール
npm update|up [PKG...] # 依存を更新
npm uninstall|remove|rm PKG... # 依存を削除
npm run <script> # package.json の scripts を実行(-- 以降は引数)
npm exec <bin> [...] # ローカル依存の実行ファイルを実行(npx 同等)
npm publish / npm pack # パッケージ公開 / tarball 作成
npm config get/set <key> ... # 設定取得・変更(.npmrc)
npm audit [fix] # 既知脆弱性の監査(修正)
npm cache clean --force # キャッシュ掃除
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-g, --global | グローバルインストール/操作 | npm install -g eslint |
-D, --save-dev | 開発依存として保存 | npm i -D typescript vitest |
--save-exact | ^ などを付けず厳密バージョンで保存 | npm i lodash@4 --save-exact |
--omit=dev | dev 依存を省いてインストール(本番向け) | npm i --omit=dev |
--legacy-peer-deps | peer 依存の衝突を無視して解決 | npm i --legacy-peer-deps |
--prefix DIR | 作業ディレクトリ/インストール先を変更 | npm i --prefix ./frontend |
--workspace <name> / -w | 指定ワークスペースで実行 | npm i -w packages/api |
--registry URL | 参照レジストリを一時的に変更 | npm i --registry=https://registry.npmmirror.com |
--yes, -y | npm init などで質問をスキップ | npm init -y |
--silent | ログ出力を抑制 | npm run build --silent |
--(ダブルハイフン) | 以降をスクリプトへ引き渡す | npm run dev -- --port=5173 |
注: オプションの意味はコマンドにより異なる場合があります。詳細は
npm help <command>を参照してください。
実行例
最小のプロジェクトを初期化して依存を追加
説明: package.json を作り、express を通常依存、typescript を開発依存で追加します。
コマンド:
mkdir myapp && cd myapp
npm init -y
npm install express
npm install -D typescript
cat package.json | sed -n '1,20p'
出力例(抜粋):
{
"name": "myapp",
"version": "1.0.0",
"dependencies": { "express": "^4.19.0" },
"devDependencies": { "typescript": "^5.5.0" }
}
スクリプトを追加して実行(引数の受け渡し)
説明: スクリプトを追加し、-- 以降の引数を渡します。
コマンド:
npm pkg set scripts.build="echo building && node -v"
npm run build
npm run build -- --flag=on
出力例(概略):
> building
v20.11.1
> building
v20.11.1
CI 向けの再現性インストール
説明: package-lock.json に厳密に従いクリーンに入れ直します(node_modules を作り直し、差異があれば失敗)。
コマンド:
npm ci
本番用に dev 依存を除いてインストール
説明: 実行時に不要な開発依存を省いてサイズや脆弱性の表面積を削減します。
コマンド:
npm install --omit=dev
エラー例: 存在しないスクリプトを実行
説明: scripts に定義がない名前を run するとエラーになります。
コマンド:
npm run not-defined
出力例:
npm ERR! Missing script: "not-defined"
npm ERR!
npm ERR! To see a list of scripts, run:
npm ERR! npm run
関連コマンド
node: Node.js の実行環境本体。npx/npm exec: ローカル依存や一時取得した CLI を実行。yarn/pnpm: 代替パッケージマネージャ。corepackでの管理も可能。nvm/volta/asdf: Node.js のバージョン管理ツール。semver: 依存バージョンの互換ポリシー(^1.2.3,~1.2.3など)。
備考
npm installとnpm ci:ciは lockfile に完全準拠し、高速・再現性重視(CI/本番向け)。installはpackage.jsonを解決し、package-lock.jsonを更新する可能性があります。- ロックファイル:
package-lock.jsonは必ずVCSにコミットして再現性を保ちます。 - グローバルインストールの権限: Linux で
-gを使うと root 権限が必要になることがあります。ユーザー領域に入れるにはnpm config set prefix ~/.localの後、PATH="$HOME/.local/bin:$PATH"を設定します。 - ワークスペース: モノレポで複数パッケージを一元管理できます(
workspacesをpackage.jsonに定義し、-wで対象指定)。 - peerDependencies: npm v7+ は peer 依存を基本自動解決します。衝突が解決できない場合は設計を見直すか、一時的に
--legacy-peer-depsを検討します。 - 設定ファイル: ルート/ユーザー/プロジェクトごとに
.npmrcを配置できます(例: レジストリ、proxy、package-lock=falseなど)。npm config get/setで操作可能。 - セキュリティ:
npm audit(とnpm audit fix)で既知脆弱性の確認・自動修正を行えます。 - プロキシ/社内環境:
npm config set proxy http://.../https-proxy/cafileなどを設定して通信を通します。
参考
- ローカルのヘルプ:
npm help/npm help <command> - 公式ドキュメント(CLI & Config, Workspaces, Publishing など)
- Node.js 公式サイト(LTS/Current の入手、Release スケジュール)

コメント