首頁
學習紀錄
遊戲心得影視Life書單案件檔案
Side Projects委託作品與二創互動實驗場
Kurau
百百 BLOG
首頁
學習紀錄
遊戲心得影視Life書單案件檔案
Side Projects委託作品與二創互動實驗場
Kurau

Kurau Blog

「隨心而寫,真真假假,都是我」

一個記錄生活、輸出興趣的個人空間。
遊戲、影視、閱讀、學習……每一段體驗都值得留下文字。

頁面導覽

  • 學習紀錄
  • 遊戲心得
  • 影視Life
  • 書單
  • 委託作品與二創
  • Kurau
  • 合作邀請

找到我

歡迎來 Discord 找我聊天!

“曾經發生的事不可能忘記,只是暫時想不起來而已。”-《神隱少女》

© 2026 Kurau All rights reserved

開發工具

Npm 與 Yarn

By Kurau·2023-04-20·Updated 2026-05-09·4 分鐘閱讀

npm vs Yarn vs pnpm

TL;DR
npm(預設,Node 內建)、Yarn(Facebook 出,Yarn 1 已 deprecated,Yarn Berry 重大改動)、pnpm(2026 主流,符號連結省空間 + 速度快)、Bun(全新運行時,內建 package manager)。2026 年新專案推薦 pnpm 或 Bun。

三者對比

項目npmYarn (Classic)pnpmBun
速度普通快快超快
磁碟空間大(每專案複製)大超省(symlink)中
Lockfilepackage-lock.jsonyarn.lockpnpm-lock.yamlbun.lockb
Workspace✅(7.0+)✅✅ 強✅
維護✅ Node 內建維護中(Berry)✅ 活躍✅ 新興
推薦?OK漸退⭐ 推薦嘗鮮

為什麼 pnpm 省空間

npm / Yarn 的 node_modules:

project-A/node_modules/react      ← 完整副本
project-B/node_modules/react      ← 又一份
project-C/node_modules/react      ← 再一份

pnpm 的 node_modules:

~/.pnpm-store/react@18.2.0        ← 全機唯一一份
project-A/node_modules/react      ← symlink 過去
project-B/node_modules/react      ← symlink 過去
project-C/node_modules/react      ← symlink 過去

10 個專案差距 GB 級,跨專案 install 也快,因為已下載過直接 link。


各管理器的速度對比

操作npmYarnpnpmBun
Cold install(無 cache)慢快更快超快
Warm install(有 cache)普通快超快超快
Update普通快快超快

Bun 的 install 速度比 npm 快 5-10 倍,因為它用 Rust + 並行 + 原生 binary。


安裝 / 切換

# pnpm
npm install -g pnpm
pnpm install
pnpm add react
pnpm dev

# Bun
curl -fsSL https://bun.sh/install | bash
bun install
bun add react
bun dev

# Yarn(Classic / Berry)
npm install -g yarn      # Classic 1.x(maintenance mode)
yarn set version berry   # 升級到 2/3/4(Yarn Berry)
bash

何時用哪個

2026 年建議
  • 新專案 / 可改變 → pnpm(普及度高、生態完整、無痛遷移)
  • 想嘗鮮 / 全 stack 都用 Bun → Bun(速度快、整合測試 / 打包)
  • 遺留專案 / 公司規範 → 跟現狀走
  • Yarn Classic 專案 → 考慮升 Yarn Berry 或遷移 pnpm
  • 單純不想想 → npm

遷移到 pnpm 的步驟

# 1. 移除 node_modules + lockfile
rm -rf node_modules package-lock.json

# 2. 用 pnpm install
pnpm install

# 3. 把 npm scripts 替換
# package.json 中所有 "npm install" / "yarn add" 改成 "pnpm add"
bash

大部分專案無痛遷移。少數套件假設 node_modules 是平鋪結構( "node_modules hoisting" 假設)會出問題,可以用 .npmrc 設定 shamefully-hoist=true 兜底。


常見地雷

1. 多管理器混用
同一專案同時有 package-lock.json 跟 yarn.lock 是地雷。lockfile 會打架,不同人 install 出不同版本。

規定團隊只用一種,把另一個 lockfile 加進 .gitignore 並刪掉。

2. 全域裝 pnpm 後 npm 也會變慢
不會,pnpm 不會影響 npm 行為。但有些 hook(如 husky)會自動偵測管理器,要注意。
3. CI/CD 配置
# GitHub Actions
- uses: pnpm/action-setup@v3
  with: { version: 9 }
- run: pnpm install --frozen-lockfile
yaml

別忘記加 --frozen-lockfile(等同 npm 的 npm ci),確保 lockfile 不被改動。

目錄

    ◆ 相關文章

    • npm --save 到底是什麼 --save-dev 不一樣嗎

      2026-05-09
    • windows系统下如何安装多版本node - NVM (好棒好用)

      2026-05-09
    • github 多個帳戶 SSH登入

      2026-05-09
    • lodash

      2026-05-09
    ← 上一篇Next.js Add Font Awesome下一篇 →cookie & sessionStorage加密 (crypto-js)

    ◆ 關於作者

    Kurau

    個人寫作 / 創作的 SoT,記錄遊戲、影視、學習與生活。

    更多 Kurau 的文章