当前位置: 首页 > news >正文

利器: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 镜像源(如淘宝源):
    npm config set registry https://registry.npmmirror.com
    
    然后重新安装 Yarn:
    npm install -g yarn
    
  • 关闭代理(如果使用了 VPN/代理):
    npm config set proxy false
    
③ 环境变量未正确配置

问题:安装成功,但运行 yarn 时提示 'yarn' 不是内部或外部命令
解决方法

  1. 找到 Yarn 的安装路径(通常在 %APPDATA%\npmC:\Users\你的用户名\AppData\Roaming\npm)。
  2. 将该路径添加到 系统环境变量 PATH 中:
    • Win + R → 输入 sysdm.cpl高级环境变量 → 在 PATH 中添加 Yarn 的路径。
  3. 重新打开 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.jsonyarn.lockpnpm-lock.yaml
默认镜像源registry.npmjs.orgregistry.yarnpkg.comregistry.npmjs.org

二、常用命令对比

操作npm 命令Yarn 命令pnpm 命令
初始化项目npm inityarn initpnpm init
安装所有依赖npm installyarn installpnpm 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 updateyarn upgradepnpm update
运行脚本npm run <script>yarn run <script>pnpm run <script>
安全审计npm audityarn npm auditpnpm 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:需配合 lernanpm-workspaces(v7+ 支持)。
3. 安全与稳定性
  • Yarnyarn.lock 严格锁定版本,零安装模式(Zero-Installs)将依赖提交到仓库,完全离线运行。
  • pnpm:依赖隔离严格,禁止访问未声明的包,避免安全风险。
  • npmpackage-lock.json 锁定版本,但依赖提升可能引发冲突。

四、使用场景推荐

场景推荐工具原因
新项目pnpm / Yarn Berry安装快、节省磁盘,依赖管理严格
企业级 MonorepoYarn Berry / pnpm原生 Workspaces 支持完善,依赖隔离好
兼容性要求高npm官方工具,生态兼容性最佳
磁盘空间敏感pnpm硬链接机制节省空间
离线开发Yarn Berry (Zero-Installs)依赖提交到 Git,无需网络安装
迁移成本低npm → Yarn Classicyarn.lock 兼容 package-lock.json

五、迁移示例

npm → Yarn
  1. 删除 node_modulespackage-lock.json
  2. 全局安装 Yarn:
    npm install -g yarn
    
  3. 安装依赖:
    yarn install  # 自动生成 yarn.lock
    
npm → pnpm
  1. 安装 pnpm:
    npm install -g pnpm
    
  2. 迁移依赖:
    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 年新项目中,pnpmYarn Berry 占比超过 70%,尤其在大型项目中优势明显。建议根据团队需求和技术栈选择合适的工具。
在这里插入图片描述

http://www.lryc.cn/news/578860.html

相关文章:

  • SQL Server 再进阶:类型多样性分析与时间维度扩展(第三课)
  • 解锁医疗AI密码:医疗人工智能专业大学四年学习路径
  • android核心技术摘要
  • 数论基础知识和模板
  • 香港券商交易系统开发与解决方案全景报告:云原生、跨境协同与高性能架构的创新实践
  • 【unitrix】 4.13 类型级加一计算(add1.rs)
  • 【GHS】Green Hills软件MULTI-IDE的安装教程
  • 【AI落地应用实战】AIGC赋能职场PPT汇报:从效率工具到辅助优化
  • Javaee 多线程 --进程和线程之间的区别和联系
  • Hadoop集群启动 (ZooKeeper、HDFS、YARN、Hbase)
  • 【网络】Linux 内核优化实战 - net.core.netdev_budget_usecs
  • VSCode-Copilot的系统提示词
  • mac mini m4安装node.js@16以下版本方法
  • Linux下MinIO分布式安装部署
  • REST API设计与Swagger:构建高效、易用的Web服务
  • 如何设置电脑定时休眠?操作指南详解
  • STM32 使用 TinyUSB
  • 【leetcode算法300】:哈希板块
  • 【RTSP从零实践】6、实现最简单的同时传输H264、AAC的RTSP服务器
  • SpringCloud系列(46)--SpringCloud Bus实现动态刷新全局广播
  • 免费版安全性缩水?ToDesk、TeamViewer、向日葵、网易UU远程访问隐私防护测评
  • 2025 年网络钓鱼威胁“狂飙”:如何筑牢防线?
  • 【记录】基于 C++ 和 Winsock 的简单 TCP 通信实现
  • 【Java面试】讲讲Redis的Cluster的分片机制
  • 企智汇研发项目管理系统:软件企业降本增效的数智化解决方案!
  • 蓝桥杯 滑行
  • 蓝桥杯51单片机设计
  • 深入理解装饰器模式:动态扩展对象功能的灵活设计模式
  • [特殊字符] Excel 提取+图片批量插入 | Python 自动化生成稽查报告 Word 模板
  • 基于Java+SpringBoot的图书管理系统