• #npm
  • #pnpm
  • #build
  • #package-manager
未分類

pnpm build vs npm run build の違い

結論

pnpm buildnpm run build は本質的に同じことをしています。 どちらも package.jsonscripts セクションに定義された build スクリプトを実行します。

本質的な違いはない

package.json の scripts

{
  "scripts": {
    "build": "nuxt build"
  }
}

両方のコマンドは、この build スクリプトを実行するだけです:

  • npm run buildnuxt build を実行
  • pnpm buildnuxt build を実行

違いは「パッケージマネージャー」

npm (Node Package Manager)

  • Node.js の公式パッケージマネージャー
  • デフォルトで Node.js に付属
  • コマンド形式: npm run <script-name>

pnpm (Performant npm)

  • npm の代替パッケージマネージャー
  • 高速で、ディスク容量を節約
  • コマンド形式: pnpm <script-name>run を省略可能)

コマンドの違い

やりたいことnpmpnpm
依存関係のインストールnpm installpnpm install
開発サーバー起動npm run devpnpm dev
ビルドnpm run buildpnpm build
プレビューnpm run previewpnpm preview
パッケージ追加npm install <pkg>pnpm add <pkg>

pnpm の省略記法

pnpm は run キーワードを省略できます:

# どちらも同じ
pnpm run build
pnpm build

# どちらも同じ
pnpm run dev
pnpm dev

npm は run を省略できません(一部の特殊なコマンド以外):

# これは動く
npm run build

# これは動かない(一部の例外を除く)
npm build  # ❌

どちらを使うべきか?

このプロジェクトでは pnpm を使う

プロジェクトの方針に従ってください。このプロジェクトでは pnpm を使用します。

混在させない

同じプロジェクトで npm と pnpm を混在させると、異なるロックファイルが作られて問題が起こります:

  • npm → package-lock.json
  • pnpm → pnpm-lock.yaml

一つのパッケージマネージャーに統一しましょう。

まとめ

  • pnpm build = npm run build = package.jsonbuild スクリプトを実行
  • 違いは「どのパッケージマネージャーを使うか」だけ
  • このプロジェクトでは pnpm を使用
  • 混在させない