利器: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 镜像源(如淘宝源):
然后重新安装 Yarn:npm config set registry https://registry.npmmirror.com
npm install -g yarn
- 关闭代理(如果使用了 VPN/代理):
npm config set proxy false
③ 环境变量未正确配置
问题:安装成功,但运行 yarn
时提示 'yarn' 不是内部或外部命令
。
解决方法:
- 找到 Yarn 的安装路径(通常在
%APPDATA%\npm
或C:\Users\你的用户名\AppData\Roaming\npm
)。 - 将该路径添加到 系统环境变量
PATH
中:- Win + R → 输入
sysdm.cpl
→ 高级 → 环境变量 → 在PATH
中添加 Yarn 的路径。
- Win + R → 输入
- 重新打开 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.json | yarn.lock | pnpm-lock.yaml |
默认镜像源 | registry.npmjs.org | registry.yarnpkg.com | registry.npmjs.org |
二、常用命令对比
操作 | npm 命令 | Yarn 命令 | pnpm 命令 |
---|---|---|---|
初始化项目 | npm init | yarn init | pnpm init |
安装所有依赖 | npm install | yarn install | pnpm 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 update | yarn upgrade | pnpm update |
运行脚本 | npm run <script> | yarn run <script> | pnpm run <script> |
安全审计 | npm audit | yarn npm audit | pnpm 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:需配合
lerna
或npm-workspaces
(v7+ 支持)。
3. 安全与稳定性
- Yarn:
yarn.lock
严格锁定版本,零安装模式(Zero-Installs)将依赖提交到仓库,完全离线运行。 - pnpm:依赖隔离严格,禁止访问未声明的包,避免安全风险。
- npm:
package-lock.json
锁定版本,但依赖提升可能引发冲突。
四、使用场景推荐
场景 | 推荐工具 | 原因 |
---|---|---|
新项目 | pnpm / Yarn Berry | 安装快、节省磁盘,依赖管理严格 |
企业级 Monorepo | Yarn Berry / pnpm | 原生 Workspaces 支持完善,依赖隔离好 |
兼容性要求高 | npm | 官方工具,生态兼容性最佳 |
磁盘空间敏感 | pnpm | 硬链接机制节省空间 |
离线开发 | Yarn Berry (Zero-Installs) | 依赖提交到 Git,无需网络安装 |
迁移成本低 | npm → Yarn Classic | yarn.lock 兼容 package-lock.json |
五、迁移示例
npm → Yarn
- 删除
node_modules
和package-lock.json
- 全局安装 Yarn:
npm install -g yarn
- 安装依赖:
yarn install # 自动生成 yarn.lock
npm → pnpm
- 安装 pnpm:
npm install -g pnpm
- 迁移依赖:
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 年新项目中,pnpm 和 Yarn Berry 占比超过 70%,尤其在大型项目中优势明显。建议根据团队需求和技术栈选择合适的工具。