NodeJS的yarn和npm作用和区别,为什么建议用yarn
一、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?