Node.js 中 npm 和 Yarn 的区别

2025年2月24日 | 阅读 4 分钟

Yarnnpm (Node Package Manager) 这样的包管理器在 JavaScript 社区中被广泛使用,尤其是在 Node.js 应用程序中管理依赖项。Yarn 和 NPM 是两个帮助项目进行依赖项管理的包管理器。顾名思义,依赖项是项目工作所需要的东西,比如代码片段。它们之所以是必需的,是因为管理项目依赖项可能很困难,并且随着项目扩展,很容易失控。依赖项管理是添加、删除和更新依赖项的过程。在本文中,我们将讨论 npmYarn 之间的区别。在讨论它们之间的区别之前,我们必须了解 npm 和 Yarn。

npm 是什么?

它是管理 JavaScript 编程语言的包管理器。它是 JavaScript 运行时环境 Node.js 使用的标准包管理器。npm 注册中心包含在线的商业和免费软件包数据库。命令行客户端,即 npm,是其组件之一。

  • Node.js 自带 npm,它是该框架的官方包管理器。
  • 注册中心: npm 注册中心位于 https://registry.npmjs.org/,是 npm 通常使用的包来源。
  • npm 的默认行为是将包安装到我们项目根目录的 node_modules 目录中。
  • 性能: 过去,尤其是在拥有大量依赖项的大型项目中,npm 有时在安装速度和依赖项解析方面遇到问题。
  • 命令: Npm 提供各种命令(npm install、npm uninstall、npm update 等)来处理包和依赖项。
  • npm 5+ 添加了 package-lock.json 文件来锁定依赖项,并确保在不同环境中安装的一致性。

Yarn 是什么?

Yarn 的意思是 Yet Another Resource Negotiator(另一个资源协商器)。它是一个包管理器,与 npm 非常相似。它现在可以下载,并且由 Facebook 开发。Yarn 最初是为了解决 npm 的速度和安全问题而设计的。

  • 为了解决当时 npm 提出的性能和可靠性问题,Facebook 与其他科技公司合作开发了 Yarn。
  • 注册中心: Yarn 默认可以使用 npm 注册中心,但它也支持使用自己的注册中心 https://registry.yarnpkg.com。
  • 安装包: 与 npm 类似,yarn 将包安装到项目的根 node_modules 目录中。
  • 性能: Yarn 最初以更快速、更可靠的依赖项解析和安装而闻名。尽管 npm 自推出以来已经取得了长足的进步。
  • 与 yarn add、yarn remove、yarn upgrade 等一样,Yarn 提供了类似的命令来管理包。
  • 通过锁定依赖项,Yarn 使用 yarn.lock 文件来确保可预测的安装。它包含比 package-lock.json 更多信息,例如校验和和其他数据。

安装过程

  • npm: Node 随 npm 一起自动安装。
  • Yarn: 安装 yarn 需要先安装 npm。

语法

它具有以下语法:

Node.js 中 npm 和 yarn 的主要区别

Difference between npm and Yarn in Node.js

Node.js 中的 npm 和 yarn 存在一些区别。npm 和 yarn 的一些主要区别如下:

特点特点Yarn
速度NPM 将执行串行安装过程。每个包都是单独安装的。Yarn 并发安装包。Yarn 设计用于同时高效地下载和安装多个包。
安全性每次安装都需要 NPM 包管理器的安全检查。Yarn 在后台执行检查,以确保我们下载的不是可能与项目依赖项冲突的东西,例如恶意脚本。Yarn 的主要特性之一就是安全性。
性能随着 npm 5 及更高版本的发布,npm 已经有了很大的改进。Yarn 最初因为并行操作和缓存而更快。
安装依赖项npm installyarn
安装包npm install package_name npm install package_name@version_numbeyarn add package_name yarn add package_name@version_number
卸载包npm uninstall package_nameyarn remove package_name

结论

在 JavaScript 应用程序中,依赖项管理需要使用两个关键工具:Yarnnpm,它们各有优缺点。npm 是 Node.js 应用程序的标准包管理器,拥有庞大的社区,并与 Node.js 应用程序无缝集成。通过其最新的更新,例如添加了 package-lock.json 文件,依赖项管理和可靠性得到了提升。虽然 Yarn 最初是为了解决 npm 的速度问题而开发的,但它很快就因其大型 yarn.lock 文件(包含额外的安全校验和)和更快的依赖项解析而广受欢迎。尽管由于 npm 的改进,其性能优势有所减弱,但 Yarn 仍然是一个不错的选择,特别是对于喜欢其功能集和过往优势的开发者而言。选择 Yarn 还是 npm 最终取决于项目的需求、对两个工具生态系统的熟悉程度以及个人偏好。两者都在不断发展,并为全球的 JavaScript 开发者提供可靠的解决方案。