npm、npx 與 pnpm:用途、差異與選型指南
npm、npx 與 pnpm 都與 JavaScript 生態的套件安裝與執行有關,但定位與功能不盡相同。本文以表格快速比較,並說明各自最佳使用情境。
一、核心定位
工具 | 所屬專案 | 主要功能 | 安裝方式 |
---|---|---|---|
npm | Node 官方 | 套件管理 (install / publish) | Node 安裝時內建 |
npx | npm 附帶 (v5.2+) | 即時執行 Node 套件 | npm 一同安裝 |
pnpm | 獨立社群 | 高效能套件管理 (硬連結) | npm i -g pnpm |
二、npm:經典套件管理器
- 指令:
npm install <pkg>
、npm run <script>
、npm publish
。 - 特點:
- node_modules 巢狀結構 (較佔空間)。
- 支援 lockfile (
package-lock.json
) 確保版本一致。 - 生態最廣泛,官方默認。
三、npx:臨時執行套件
- 指令:
npx create-react-app myapp
。 - 用途:
- 一次性 CLI 工具,避免全域安裝。
- 預設先尋
node_modules/.bin
,找不到再下載快取。
- 小技巧:
npx --yes <pkg>@latest
省略互動確認。
四、pnpm:硬連結的高速方案
- 優勢:
- 內容可尋址儲存 (Content-Addressable):全域 store + 硬連結,省空間。
node_modules
扁平,安裝速度快且避免重複。- 原生支援 Monorepo (
pnpm workspaces
)。
- 與 Yarn 的比較:更嚴格的 hoist 規則,可避免幽靈相依。
基本指令對照
需求 | npm | pnpm |
---|---|---|
安裝相依 | npm i |
pnpm i |
新增套件 | npm i axios -S |
pnpm add axios |
移除套件 | npm uninstall axios |
pnpm remove axios |
執行腳本 | npm run dev |
pnpm dev |
五、選用建議
場景 | 建議工具 | 理由 |
---|---|---|
傳統專案、CI 預裝 Node | npm | 兼容性最佳、無需額外安裝 |
一次性 CLI / Boilerplate | npx | 無須污染全域,確保最新版本 |
Monorepo 或需節省磁碟 | pnpm | 共用快取、安裝極快、workspaces 支援佳 |
希望鎖定生產環境套件 | npm / pnpm | 皆支援 lockfile (npm v7+、pnpm-lock.yaml) |
六、常見疑問
- npx 能取代 npm install -g 嗎?
大多數 CLI 工具可;若需頻繁使用仍建議全域安裝以加快啟動。 - pnpm 與 Yarn 2+ 哪個更好?
兩者都採 Plug\nPlay/硬連結理念,pnpm 社群更活躍、更新快;依團隊既有流程選擇。 - CI/CD 要改嗎?
pnpm 在 GitHub Actions 有官方 action;僅需安裝pnpm
並使用相同 lockfile。
七、結語
- npm:穩定官方首選。
- npx:即用即丟的 CLI 執行器 。
- pnpm:針對大型或多專案的高效能套件管理器。
依專案規模與團隊需求選擇合適工具,能有效提升開發與 CI 效率!
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Comments