一、yarn和npm作用和區別
yarn異步執行安卓,npm同步執行安裝
yarn會復用,已經安裝的不會再次安裝。不過新版npm已經解決了。
Yarn安裝信息干凈一點,npm會羅列包信息
下面是關于 Node.js 中 npm
和 yarn
的完整對比與說明,幫你快速掌握兩者的使用場景與區別。
🧩 一句話總結:
npm
和yarn
都是 Node.js 的包管理器,用于安裝、管理 JavaScript 項目的依賴庫。
🆚 npm 和 yarn 的核心區別對比表
對比項 | npm (Node 包管理器) | yarn (Facebook 推出) |
---|---|---|
開發公司 | Node.js 官方 | |
默認安裝 | ? Node.js 安裝后自帶 | ? 需手動安裝 |
安裝速度 | 較慢(老版本) v7+已有改進 | ? 多線程并行安裝,速度快 |
鎖文件 | package-lock.json | yarn.lock |
離線安裝 | 支持,但不如 Yarn 明確 | ? 支持(緩存后可離線) |
命令兼容性 | 標準 Node.js 指令 | 大多數命令和 npm 一樣,也提供額外功能 |
Workspace(多包) | v7+ 開始支持 | ? 更早支持,體驗更好 |
安全性(audit) | ? npm audit 檢查依賴漏洞 | ? yarn audit ,底層用相同漏洞庫 |
穩定性與社區活躍度 | 官方維護,廣泛使用 | 用戶多,性能強,但主流項目現在兩者都支持 |
📦 常用命令對比
功能 | npm 命令 | yarn 命令 |
---|---|---|
安裝依賴 | npm install | yarn 或 yarn install |
安裝某個包 | npm install axios | yarn add axios |
刪除某個包 | npm uninstall axios | yarn remove axios |
更新某個包 | npm update axios | yarn upgrade axios |
全局安裝 | npm install -g nodemon | yarn global add nodemon |
初始化項目 | npm init | yarn init |
運行腳本 | npm run build | yarn build |
清理緩存 | npm cache clean --force | yarn cache clean |
🚀 選擇建議:
? 推薦使用 npm
的情況:
-
不想多裝軟件;
-
項目已經用
npm
,不想切換; -
喜歡與 Node.js 保持一致;
-
想用
npx
直接執行臨時包。
? 推薦使用 yarn
的情況:
-
多人協作項目,追求鎖文件一致性;
-
項目依賴復雜,想要更快的安裝;
-
使用 monorepo(如 Lerna) 管理多個包;
-
你喜歡
yarn
的工作區(workspaces)功能。
?注意:不要混用 npm
和 yarn
安裝依賴!
否則可能出現:
-
node_modules
內容不一致; -
lock
文件沖突(yarn.lock
和package-lock.json
); -
難以調試依賴問題。
🧠 yarn 現在也有兩個版本:
版本 | 特點 |
---|---|
yarn v1 | 最常用、穩定 |
yarn v2+(Berry) | 新架構、默認不開啟 node_modules 、更復雜 |
如果你告訴我你的項目偏向 單體 / 多包 / 是否已有 lock 文件,我還能具體建議你該用哪個。
是否需要我寫一段示例 npm
和 yarn
安裝日志對比給你看?
二、為什么建議用yarn而不用npm
Monorepo 項目、多包依賴、企業級項目 | Yarn(尤其 Yarn v1)或 Yarn Berry ?? |
高性能依賴管理、希望使用插件機制 | Yarn v3(Berry) |
精細化依賴控制、構建優化 | Yarn + Turborepo/Nx |
🚀 實用命令對比
動作 | npm 命令 | yarn 命令 |
---|---|---|
安裝依賴 | npm install | yarn install |
添加依賴 | npm install xxx | yarn add xxx |
添加 dev 依賴 | npm install xxx --save-dev | yarn add xxx --dev |
刪除依賴 | npm uninstall xxx | yarn remove xxx |
全局安裝 | npm install -g xxx | yarn global add xxx |
如你現在在做 Monorepo(比如你之前提到有前后端項目 + 公共組件庫),強烈建議你用 Yarn + Yarn Workspaces
或 Yarn + Turborepo
來統一管理依賴。
需要我幫你遷移現有項目從 npm 到 yarn 嗎?或者配置 Yarn Workspaces?