未分類
pnpm build vs npm run build の違い
結論
pnpm build と npm run build は本質的に同じことをしています。 どちらも package.json の scripts セクションに定義された build スクリプトを実行します。
本質的な違いはない
package.json の scripts
{
"scripts": {
"build": "nuxt build"
}
}
両方のコマンドは、この build スクリプトを実行するだけです:
npm run build→nuxt buildを実行pnpm build→nuxt buildを実行
違いは「パッケージマネージャー」
npm (Node Package Manager)
- Node.js の公式パッケージマネージャー
- デフォルトで Node.js に付属
- コマンド形式:
npm run <script-name>
pnpm (Performant npm)
- npm の代替パッケージマネージャー
- 高速で、ディスク容量を節約
- コマンド形式:
pnpm <script-name>(runを省略可能)
コマンドの違い
| やりたいこと | npm | pnpm |
|---|---|---|
| 依存関係のインストール | npm install | pnpm install |
| 開発サーバー起動 | npm run dev | pnpm dev |
| ビルド | npm run build | pnpm build |
| プレビュー | npm run preview | pnpm 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.jsonのbuildスクリプトを実行- 違いは「どのパッケージマネージャーを使うか」だけ
- このプロジェクトでは pnpm を使用
- 混在させない