npm (Node Package Manager)
npm 是 Node.js 的默认包管理器,随 Node.js 一起安装。
特点:
官方包管理器,拥有最大的包生态系统
自动处理依赖关系
提供 package.json 文件管理项目依赖
包含 CLI 工具用于安装、发布和管理包
常用命令:
npm init # 初始化项目
npm install <package> # 安装包
npm install --save <package> # 安装并添加到dependencies
npm install --save-dev <package> # 安装并添加到devDependencies
npm update <package> # 更新包
npm uninstall <package> # 卸载包
npm run <script> # 运行package.json中的脚本
npm publish # 发布包
优缺点:
✅ 官方支持,生态系统最全
✅ 与Node.js捆绑安装
❌ 早期版本依赖安装较慢
❌ 早期版本依赖管理不够严格
Yarn
Yarn 是由Facebook、Google、Exponent和Tilde共同开发的包管理器,旨在解决npm早期版本的一些问题。
特点:
速度快(并行安装)
更安全的依赖管理(yarn.lock锁定版本)
离线模式(缓存已下载的包)
更清晰的输出信息
常用命令:
yarn init # 初始化项目
yarn add <package> # 安装包
yarn add --dev <package> # 安装开发依赖
yarn upgrade <package> # 更新包
yarn remove <package> # 移除包
yarn install # 安装所有依赖
yarn <script> # 运行package.json中的脚本
优缺点:
✅ 安装速度快
✅ 依赖版本锁定更严格
✅ 输出信息更友好
❌ 需要额外安装(不随Node.js提供)
cnpm
cnpm 是淘宝团队开发的npm镜像客户端,主要用于解决国内用户安装npm包慢的问题。
特点:
使用淘宝npm镜像(registry.npmmirror.com)
下载速度快(尤其在国内)
兼容npm命令
支持私有模块
常用命令:
cnpm install <package> # 安装包
cnpm install -g <package> # 全局安装
cnpm update <package> # 更新包
cnpm uninstall <package> # 卸载包
优缺点:
✅ 国内下载速度极快
✅ 完全兼容npm命令
❌ 非官方解决方案
❌ 可能偶尔存在同步延迟
三者对比
特性 | npm | Yarn | cnpm |
---|---|---|---|
开发者 | Node.js官方 | Facebook等 | 淘宝团队 |
安装方式 | 随Node.js安装 | 需要单独安装 | 需要单独安装 |
速度 | 中等 | 快 | 非常快(国内) |
锁定文件 | package-lock.json | yarn.lock | package-lock.json |
离线模式 | 有 | 有(更完善) | 无 |
镜像支持 | 可配置 | 可配置 | 默认使用淘宝镜像 |
国内适用性 | 一般 | 一般 | 非常好 |
使用建议
国内开发:推荐使用cnpm或配置npm/yarn使用淘宝镜像
# 为npm设置淘宝镜像 npm config set registry https://registry.npmmirror.com # 为yarn设置淘宝镜像 yarn config set registry https://registry.npmmirror.com
团队协作:推荐使用Yarn,因其锁定版本更严格,能更好保证一致性
开源项目:使用npm或Yarn,因为它们是更通用的解决方案
需要最大兼容性:使用npm,因为它是Node.js官方工具
大型项目:Yarn或npm的新版本(v7+),因为它们现在性能差距不大