npm – Node.jsのパッケージ管理とスクリプト実行を行うCLI

依存関係管理
スポンサーリンク

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=devdev 依存を省いてインストール(本番向け)npm i --omit=dev
--legacy-peer-depspeer 依存の衝突を無視して解決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, -ynpm 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 installnpm ci: ci は lockfile に完全準拠し、高速・再現性重視(CI/本番向け)。installpackage.json を解決し、package-lock.json を更新する可能性があります。
  • ロックファイル: package-lock.json必ずVCSにコミットして再現性を保ちます。
  • グローバルインストールの権限: Linux で -g を使うと root 権限が必要になることがあります。ユーザー領域に入れるには npm config set prefix ~/.local の後、PATH="$HOME/.local/bin:$PATH" を設定します。
  • ワークスペース: モノレポで複数パッケージを一元管理できます(workspacespackage.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 スケジュール)
スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント