文章目錄
- **1. 安裝 Yarn(推薦方法)**
- **2. 驗證安裝**
- **3. 常見問題及解決方法**
- **① 權限不足(Error: EPERM)**
- **② 網絡問題(連接超時或下載失敗)**
- **③ 環境變量未正確配置**
- **4. 替代安裝方法(如果 npm 安裝失敗)**
- **① 使用 Chocolatey(Windows 包管理器)**
- **② 使用 Scoop**
- **③ 直接下載安裝包**
- **5. 卸載 Yarn**
- **一、核心特性對比**
- **二、常用命令對比**
- **三、核心差異詳解**
- 1. **依賴安裝機制**
- 2. **Monorepo 支持**
- 3. **安全與穩定性**
- **四、使用場景推薦**
- **五、遷移示例**
- npm → Yarn
- npm → pnpm
- **六、鏡像源加速**
- **總結**
1. 安裝 Yarn(推薦方法)
打開 CMD(命令提示符) 或 PowerShell(建議以 管理員身份運行),執行以下命令:
npm install -g yarn
-g
表示全局安裝,使yarn
命令可以在任何目錄下使用。
2. 驗證安裝
安裝完成后,檢查 Yarn 是否安裝成功:
yarn --version
如果顯示版本號(如 4.1.0
),說明安裝成功。
3. 常見問題及解決方法
① 權限不足(Error: EPERM)
報錯示例:
npm ERR! Error: EPERM: operation not permitted
解決方法:
- 以管理員身份運行 CMD/PowerShell,然后重新執行安裝命令。
- 如果仍然報錯,嘗試修復 npm 權限:
npm cache clean --force npm install -g yarn --force
② 網絡問題(連接超時或下載失敗)
報錯示例:
npm ERR! network timeout
npm ERR! Unable to download package
解決方法:
- 切換 npm 鏡像源(如淘寶源):
然后重新安裝 Yarn:npm config set registry https://registry.npmmirror.com
npm install -g yarn
- 關閉代理(如果使用了 VPN/代理):
npm config set proxy false
③ 環境變量未正確配置
問題:安裝成功,但運行 yarn
時提示 'yarn' 不是內部或外部命令
。
解決方法:
- 找到 Yarn 的安裝路徑(通常在
%APPDATA%\npm
或C:\Users\你的用戶名\AppData\Roaming\npm
)。 - 將該路徑添加到 系統環境變量
PATH
中:- Win + R → 輸入
sysdm.cpl
→ 高級 → 環境變量 → 在PATH
中添加 Yarn 的路徑。
- Win + R → 輸入
- 重新打開 CMD/PowerShell,再次運行
yarn --version
測試。
4. 替代安裝方法(如果 npm 安裝失敗)
① 使用 Chocolatey(Windows 包管理器)
如果你已安裝 Chocolatey,可以運行:
choco install yarn
② 使用 Scoop
如果已安裝 Scoop,可以運行:
scoop install yarn
③ 直接下載安裝包
從 Yarn 官網 下載 Windows 版的 .msi
安裝包,雙擊安裝。
5. 卸載 Yarn
如果需要卸載 Yarn,可以執行:
npm uninstall -g yarn
或者通過 Chocolatey/Scoop 卸載:
choco uninstall yarn # Chocolatey
scoop uninstall yarn # Scoop
以下是 npm、Yarn 及 pnpm 三大主流 JavaScript 包管理工具的詳細對比,涵蓋核心特性、命令差異及使用場景:
一、核心特性對比
特性 | npm (Node Package Manager) | Yarn (Yarn Berry) | pnpm (Performance npm) |
---|---|---|---|
開發者 | Node.js 官方 | Meta (Facebook) + 社區 | Vercel 團隊 |
安裝速度 | 中等 | 快(依賴緩存機制) | 極快(硬鏈接 + 符號鏈接) |
磁盤空間占用 | 高(重復依賴) | 中(依賴提升) | 極低(共享依賴) |
依賴管理機制 | 嵌套依賴樹 | 扁平化依賴樹 | 內容尋址存儲 |
安全機制 | npm audit (基礎) | 零安裝(離線優先) | 嚴格隔離依賴(防幽靈依賴) |
Monorepo 支持 | 需配合 Lerna | 原生支持(Workspaces) | 原生支持(Workspaces) |
鎖定文件 | package-lock.json | yarn.lock | pnpm-lock.yaml |
默認鏡像源 | registry.npmjs.org | registry.yarnpkg.com | registry.npmjs.org |
二、常用命令對比
操作 | npm 命令 | Yarn 命令 | pnpm 命令 |
---|---|---|---|
初始化項目 | npm init | yarn init | pnpm init |
安裝所有依賴 | npm install | yarn install | pnpm install |
添加生產依賴 | npm install <package> | yarn add <package> | pnpm add <package> |
添加開發依賴 | npm install -D <package> | yarn add -D <package> | pnpm add -D <package> |
全局安裝 | npm install -g <package> | yarn global add <package> | pnpm add -g <package> |
移除依賴 | npm uninstall <package> | yarn remove <package> | pnpm remove <package> |
更新依賴 | npm update | yarn upgrade | pnpm update |
運行腳本 | npm run <script> | yarn run <script> | pnpm run <script> |
安全審計 | npm audit | yarn npm audit | pnpm audit |
切換鏡像源 | npm config set registry <url> | yarn config set registry <url> | pnpm config set registry <url> |
三、核心差異詳解
1. 依賴安裝機制
- npm:早期版本使用嵌套依賴(
node_modules
嵌套),v3+ 改為扁平化結構,可能導致依賴重復和幽靈依賴(未聲明但可訪問)。 - Yarn:通過 Plug’n’Play (PnP) 拋棄
node_modules
,直接映射依賴到緩存目錄,節省空間但需適配工具鏈。 - pnpm:使用硬鏈接將依賴指向全局存儲,每個項目共享同一份依賴文件,節省 70%+ 磁盤空間。
2. Monorepo 支持
- Yarn/pnpm:原生支持
workspaces
,可跨包共享依賴:// package.json {"workspaces": ["packages/*"] }
- npm:需配合
lerna
或npm-workspaces
(v7+ 支持)。
3. 安全與穩定性
- Yarn:
yarn.lock
嚴格鎖定版本,零安裝模式(Zero-Installs)將依賴提交到倉庫,完全離線運行。 - pnpm:依賴隔離嚴格,禁止訪問未聲明的包,避免安全風險。
- npm:
package-lock.json
鎖定版本,但依賴提升可能引發沖突。
四、使用場景推薦
場景 | 推薦工具 | 原因 |
---|---|---|
新項目 | pnpm / Yarn Berry | 安裝快、節省磁盤,依賴管理嚴格 |
企業級 Monorepo | Yarn Berry / pnpm | 原生 Workspaces 支持完善,依賴隔離好 |
兼容性要求高 | npm | 官方工具,生態兼容性最佳 |
磁盤空間敏感 | pnpm | 硬鏈接機制節省空間 |
離線開發 | Yarn Berry (Zero-Installs) | 依賴提交到 Git,無需網絡安裝 |
遷移成本低 | npm → Yarn Classic | yarn.lock 兼容 package-lock.json |
五、遷移示例
npm → Yarn
- 刪除
node_modules
和package-lock.json
- 全局安裝 Yarn:
npm install -g yarn
- 安裝依賴:
yarn install # 自動生成 yarn.lock
npm → pnpm
- 安裝 pnpm:
npm install -g pnpm
- 遷移依賴:
pnpm import # 從 package-lock.json 生成 pnpm-lock.yaml pnpm install
六、鏡像源加速
# 設置淘寶源
npm config set registry https://registry.npmmirror.com
yarn config set registry https://registry.npmmirror.com
pnpm config set registry https://registry.npmmirror.com
總結
- 追求性能和磁盤效率:選 pnpm(尤其是 Monorepo 項目)。
- 企業級穩定性和離線能力:選 Yarn Berry。
- 兼容性和官方支持:選 npm(Node.js 原生集成)。
📌 趨勢:2025 年新項目中,pnpm 和 Yarn Berry 占比超過 70%,尤其在大型項目中優勢明顯。建議根據團隊需求和技術棧選擇合適的工具。