1. 安装方式
-
npm:随 Node.js 一起安装,自带。
-
Yarn:需要单独安装(用 npm 或下载安装包)。
2. 速度和性能
-
Yarn(最初优势):
-
使用 并行安装,速度比早期的 npm 快很多。
-
通过 缓存机制(离线模式)加速再次安装。
-
-
npm(后来追上):
- 从 npm v5 开始引入
package-lock.json
,也支持并行安装,速度已接近 Yarn。
- 从 npm v5 开始引入
3. 锁文件
-
npm :生成
package-lock.json
。 -
Yarn :生成
yarn.lock
。🔑 都是用来锁定依赖版本,确保团队环境一致。
4. 命令差异
虽然大多数命令相似,但有些区别:
功能 | npm 命令 | yarn 命令 |
---|---|---|
安装依赖 | npm install |
yarn install |
安装包 | npm install axios |
yarn add axios |
安装开发依赖 | npm install axios -D |
yarn add axios --dev |
删除包 | npm uninstall axios |
yarn remove axios |
全局安装 | npm install -g xxx |
yarn global add xxx |
运行脚本 | npm run serve |
yarn serve |
👉 Yarn 少了 run
,更简洁。
5. 确定性与一致性
-
Yarn:设计之初就强调"确定性安装",确保任何机器、任何环境安装的依赖结果完全一致。
-
npm :后来通过
package-lock.json
才做到类似的效果。
6. 工作区 (Workspaces)
-
Yarn :内置支持 Monorepo(多包项目) 管理。
-
npm:npm v7 才开始支持 Workspaces,但生态还不如 Yarn 稳定。
7. 社区与生态
-
npm:历史更悠久,用户基数更大,社区生态成熟。
-
Yarn:Facebook 推出,Vue、React 等大项目曾推荐使用,但后来很多团队也回归 npm。
8. 总结
-
如果是 新手 / 小项目:npm 完全够用,不用额外装 Yarn。
-
如果是 大项目 / Monorepo 管理:Yarn(特别是 Yarn v2/v3)更好。
-
两者安装的包都来自 npm registry,兼容性没问题。
👉 一句话总结:
npm 是默认的,Yarn 是优化过的选择。随着 npm 的更新,它们的差距已经没那么大了。