利器:NPM和YARN及其他

在這里插入圖片描述

文章目錄

      • **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 鏡像源(如淘寶源):
    npm config set registry https://registry.npmmirror.com
    
    然后重新安裝 Yarn:
    npm install -g yarn
    
  • 關閉代理(如果使用了 VPN/代理):
    npm config set proxy false
    
③ 環境變量未正確配置

問題:安裝成功,但運行 yarn 時提示 'yarn' 不是內部或外部命令
解決方法

  1. 找到 Yarn 的安裝路徑(通常在 %APPDATA%\npmC:\Users\你的用戶名\AppData\Roaming\npm)。
  2. 將該路徑添加到 系統環境變量 PATH 中:
    • Win + R → 輸入 sysdm.cpl高級環境變量 → 在 PATH 中添加 Yarn 的路徑。
  3. 重新打開 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.jsonyarn.lockpnpm-lock.yaml
默認鏡像源registry.npmjs.orgregistry.yarnpkg.comregistry.npmjs.org

二、常用命令對比

操作npm 命令Yarn 命令pnpm 命令
初始化項目npm inityarn initpnpm init
安裝所有依賴npm installyarn installpnpm 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 updateyarn upgradepnpm update
運行腳本npm run <script>yarn run <script>pnpm run <script>
安全審計npm audityarn npm auditpnpm 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:需配合 lernanpm-workspaces(v7+ 支持)。
3. 安全與穩定性
  • Yarnyarn.lock 嚴格鎖定版本,零安裝模式(Zero-Installs)將依賴提交到倉庫,完全離線運行。
  • pnpm:依賴隔離嚴格,禁止訪問未聲明的包,避免安全風險。
  • npmpackage-lock.json 鎖定版本,但依賴提升可能引發沖突。

四、使用場景推薦

場景推薦工具原因
新項目pnpm / Yarn Berry安裝快、節省磁盤,依賴管理嚴格
企業級 MonorepoYarn Berry / pnpm原生 Workspaces 支持完善,依賴隔離好
兼容性要求高npm官方工具,生態兼容性最佳
磁盤空間敏感pnpm硬鏈接機制節省空間
離線開發Yarn Berry (Zero-Installs)依賴提交到 Git,無需網絡安裝
遷移成本低npm → Yarn Classicyarn.lock 兼容 package-lock.json

五、遷移示例

npm → Yarn
  1. 刪除 node_modulespackage-lock.json
  2. 全局安裝 Yarn:
    npm install -g yarn
    
  3. 安裝依賴:
    yarn install  # 自動生成 yarn.lock
    
npm → pnpm
  1. 安裝 pnpm:
    npm install -g pnpm
    
  2. 遷移依賴:
    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 年新項目中,pnpmYarn Berry 占比超過 70%,尤其在大型項目中優勢明顯。建議根據團隊需求和技術棧選擇合適的工具。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87770.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87770.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87770.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

跨平臺直播美顏SDK集成實錄:Android/iOS如何適配貼紙功能

眾所周知&#xff0c;直播平臺與短視頻平臺的貼紙功能不僅是用戶表達個性的方式&#xff0c;更是平臺提高用戶粘性和互動轉化的法寶。 可問題來了&#xff1a;如何讓一個貼紙功能&#xff0c;在Android和iOS兩大平臺上表現一致、運行流暢、加載穩定&#xff1f;這背后&#xff…

JavaWeb(蒼穹外賣)--學習筆記04(前端:HTML,CSS,JavaScript)

前言 本片文章是學習B站黑馬程序員蒼穹外賣的學習筆記。因為最近期末周&#xff0c;一直在應付考試所以就學的很少&#xff0c;恰好視頻中在講Nginx反向代理和負載均衡&#xff08;寫著對前端的內容做一個復習&#xff09; 概述&#xff1a; 1.web前端主要由三部分組成&…

智能學號抽取系統 V5.4.3.2 —— Vue.js 實現的多功能課堂隨機抽簽工具

智能學號抽取系統 V5.4.3.2 —— Vue.js 實現的多功能課堂隨機抽簽工具 在教學或會議場景中&#xff0c;我們經常需要隨機抽取一個或多個學號/編號來決定發言者、答題者或者參與者。為了提高效率和公平性&#xff0c;我們可以使用一些智能化的小工具來實現這一過程。 今天介紹…

從0開始學習R語言--Day39--Spearman 秩相關

在非參數統計中&#xff0c;不看數據的實際數值&#xff0c;單純比較兩組變量的值的排名是通用的基本方法&#xff0c;但在客觀數據中&#xff0c;很多變量的關系都是非線性的&#xff0c;其他的方法不是對樣本數據的大小和線性有要求&#xff0c;就是只能對比數據的差異性&…

WSL - Linux 安裝 Anaconda3-2025.06-0 詳細教程 [WSL 分發版均適用]

一、檢查系統狀態 安裝前先確認 WSL - Linxu 已正常啟動&#xff08;比如 Ubuntu&#xff09;&#xff0c;網絡連接穩定&#xff0c;并且系統磁盤有足夠空間&#xff0c;一般建議預留至少 5GB 以上的可用空間&#xff0c;避免因空間不足導致安裝失敗。 二、下載安裝包 Anacond…

熱血三國建筑攻略表格

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>熱血三國建筑攻略表格</title><style>…

SpringBoot+MySQL醫院掛號系統源碼

概述 基于SpringBootMySQL開發的醫院掛號系統完整源碼&#xff0c;該系統功能完善&#xff0c;包含從患者掛號到醫生管理的全流程解決方案&#xff0c;采用主流技術棧開發&#xff0c;代碼規范易于二次開發。 主要內容 系統包含完整的前后臺功能模塊&#xff1a; ??前臺功…

Linux系統之MySQL數據庫基礎

目錄 一、概述 數據庫概念 數據庫的類型 關系型數據庫模型 關系數據庫相關概念 二、安裝 1、mariadb安裝 2、mysql安裝 3、啟動并開機自啟 4、本地連接&#xff08;本地登錄&#xff09; 三、mysqld數據庫配置與命令 yum安裝后生成的目錄 mysqld服務器的啟動腳本 …

MySQL--InnoDB存儲引擎--頁結構

目錄 一、頁的大小 二、頁的分類 三、頁頭和頁尾 3.1 頁頭--File Header 3.2 頁尾--File Trailer 3.3 LSN 四、數據行 五、頁中數據的查詢 六、事務和索引在頁中的記錄 一、頁的大小 前面介紹了每個數據頁默認大小為16KB&#xff0c;是操作系統“數據塊” 4KB 的整數倍…

卡車檢測數據集-700張圖片交通運輸管理 智能監控系統 道路安全監測

跌倒檢測數據集-4500張圖片&#x1f4e6; 已發布目標檢測數據集合集&#xff08;持續更新&#xff09;&#x1f69b; Deteccin de carpa 2 Computer Vision Project&#x1f4cc; 數據集概覽包含類別&#x1f3af; 應用場景&#x1f5bc; 數據樣本展示&#x1f527; 使用建議&a…

Python爬蟲實戰:研究pangu庫相關技術

1. 引言 1.1 研究背景與意義 在數字化信息傳播時代,中文文本排版質量直接影響信息傳達效果。規范的排版要求中文與西文、數字間保持合理空格間距,但人工處理不僅效率低,且易出現一致性問題。隨著互聯網中文內容爆發式增長,傳統人工排版已無法滿足需求。Python 作為高效的…

day48-考試系統項目集群部署

1. ?考試系統項目集群架構圖負載均衡說明7層負載通過nginx對http請求進行轉發&#xff08;uri,ua,類型&#xff09;4層負載對端口負載均衡&#xff08;后端&#xff09;2. &#x1f4dd;環境準備角色主機ip負載均衡lb01/lb02172.16.1.5/172.16.1.6前端web集群web01/web02172.1…

Redis+Caffeine雙層緩存策略對比與實踐指南

RedisCaffeine雙層緩存策略對比與實踐指南在高并發場景下&#xff0c;緩存是提升系統性能和并發處理能力的關鍵手段。常見的緩存方案包括遠程緩存&#xff08;如Redis&#xff09;和本地緩存&#xff08;如Caffeine&#xff09;。單層緩存各有優劣&#xff0c;結合兩者優勢的雙…

FastAPI+React19 ERP系統實戰 第02期

一、搭建環境 1.1 創建Python虛擬環境 切換Python版本: pyenv local 3.12創建虛擬環境: python -m venv venv激活虛擬環境: venv\Scripts\activate1.2 安裝FastAPI項目依賴 requirements.txt fastapi==0.109.1

百度AI文心大模型4.5系列開源模型評測,從安裝部署到應用體驗

2025年6月30日&#xff0c;百度突然宣布&#xff0c;將旗下最新的大語言模型文心大模型4.5&#xff08;ERNIE 4.5&#xff09;全系列開源&#xff0c;震動整個AI行業。百度在GitCode平臺上開源了文心大模型4.5系列&#xff0c;包括ERNIE-4.5-VL-424B-A47B-Base-PT等多個型號。此…

windows安裝maven環境

在maven官網下載安裝包 https://maven.apache.org/download.cgi 下載完成后安裝maven&#xff0c;一般下載編輯好的 創建個maven目錄解壓出來即可 配置環境變量 根據剛剛的安裝路徑&#xff0c;新建一個命名為MAVEN_HOME的系統變量 新建完成點開系統變量的Path項&#xff0c;…

MySQL(117)何進行數據庫安全加密?

數據庫安全加密是保護敏感數據免受未授權訪問的重要手段。以下是一個詳細深入的步驟&#xff0c;介紹如何進行數據庫安全加密&#xff0c;包括數據傳輸加密和數據存儲加密。 一. 數據傳輸加密 確保數據在傳輸過程中被加密&#xff0c;以防止中間人攻擊。我們以MySQL為例&#x…

工程化實踐——標準化Eslint、PrettierTS

前端工程化中的標準化工具&#xff08;如Prettier、ESLint、Husky等&#xff09;雖然大幅提升了開發效率和代碼質量&#xff0c;但在實際使用中也存在一些限制和挑戰。以下從工具特性、團隊協作、開發體驗等維度詳細分析常見限制&#xff0c;并以Prettier為核心舉例說明&#x…

應急響應靶場——web3 ——知攻善防實驗室

前景需要&#xff1a; 小苕在省護值守中&#xff0c;在靈機一動情況下把設備停掉了&#xff0c;甲方問&#xff1a;為什么要停設備&#xff1f;小苕說&#xff1a;我第六感告訴我&#xff0c;這機器可能被黑了。這是他的服務器&#xff0c;請你找出以下內容作為通關條件&#…

Ubuntu:Tomcat里面的catalina.sh

認識catalina.sh 1 啟動Tomcat catalina.sh start相當于startup.sh 2 停止Tomcat catalina.sh stop相當于shutdown.sh 3 前臺運行Tomcat 一般用于調試 catalina.sh run4 Tomcat腳本 編輯如下腳本run_tomcat.sh 里面的一些HOME位置改成自己的 #!/bin/shWORKDIR$(cd $(dirname $0…