Skip to main content

從npm換成yarn需要注意什麼?

npm 轉移到 Yarn 是一個相對簡單的過程,因為它們都使用相同的 package.json 格式並共用 npm 的套件庫 (Registry)。不過,您需要注意以下幾個關鍵步驟和差異:


專案轉移步驟與注意事項 (Yarn Classic/v1)

1. 安裝 Yarn

首先,您需要將 Yarn 安裝到您的系統中。由於 npm 是 Node.js 預設的套件管理器,您可以使用它來安裝 Yarn:

# 全域安裝 Yarn Classic (v1)
npm install -g yarn

2. 清理現有的鎖定檔案和模組

為了確保新專案使用 Yarn 的鎖定機制,您需要移除 npm 生成的鎖定檔案和舊的 node_modules 資料夾。

  • 刪除 npm 鎖定檔案:

    rm package-lock.json 
    # 或在 Windows 上使用:del package-lock.json

  • 刪除 node_modules 資料夾 (可選但推薦):

    rm -rf node_modules
    # 或在 Windows 上使用:rmdir /s /q node_modules

3. 運行 Yarn 安裝

在您的專案根目錄下運行簡單的安裝命令。Yarn 會讀取 package.json,下載所有依賴項,並生成自己的鎖定檔案。

yarn install
# 簡寫:yarn
  • 結果: 專案根目錄下會生成一個新的鎖定檔案:yarn.lock

  • 重要: 請務必將 yarn.lock 提交到您的版本控制系統中 (例如 Git),並移除舊的 package-lock.json 的追蹤。


核心指令差異比較

這是轉移後最需要習慣的部分。Yarn 的指令通常更簡潔、更直覺。

目的npm 指令Yarn 指令備註
安裝依賴npm installyarn installyarn習慣上簡寫為 yarn 即可。
新增套件npm install <pkg> --saveyarn add <pkg>Yarn 預設就會儲存到 package.json
新增開發依賴npm install <pkg> --save-devyarn add <pkg> --dev
移除套件npm uninstall <pkg>yarn remove <pkg>
運行腳本npm run <script>yarn run <script>yarn <script>yarn test / yarn start / yarn build 等簡寫常用。
全域安裝npm install -g <pkg>yarn global add <pkg>
決定性安裝npm ci (用於 CI/CD)yarn install --frozen-lockfileyarn install 在 CI/CD 環境下會自動使用此模式。

進階考量 (Yarn Berry/v2+)

如果您考慮升級到 Yarn 2.x (Berry) 或更高版本,會有更根本性的變化,需要額外注意:

  1. Plug'n'Play (PnP) 模式:Yarn Berry 的預設模式,它不再生成龐大的 node_modules 資料夾,而是使用 .pnp.cjs 檔案來映射依賴關係。

    • 優點: 安裝極快、佔用空間小、解決依賴提升問題。

    • 注意事項: 一些舊的工具或編輯器外掛可能需要額外配置才能正常運作 (儘管生態系統支援已大幅改善)。

  2. 指令和配置檔案

    • yarn install 指令的行為在 PnP 模式下會有所不同。

    • 配置檔案從 .npmrc.yarnrc 變為 .yarnrc.yml (使用 YAML 格式)。

總結來說:

對於大多數現有專案,轉移到 Yarn Classic (v1) 主要就是刪除 package-lock.json改變指令。如果您的專案較大或包含多個套件 (Monorepo),Yarn 的 Workspaces 會是您轉移後最能感受到效率提升的功能之一。