📜  npm 和 yarn 的区别

📅  最后修改于: 2022-05-13 01:56:20.496000             🧑  作者: Mango

npm 和 yarn 的区别


NPMYarn是帮助管理项目依赖项的包管理器。听起来,依赖项是项目所依赖的东西,是使项目正常工作所需的一段代码。我们需要它们,因为管理项目的依赖项是一项艰巨的任务,并且很快就会变得乏味,并且随着项目的增长而失控。通过管理依赖关系,我们的意思是包含、取消包含和更新它们。

npm:它是 JavaScript 编程语言的包管理器。它是 JavaScript 运行时环境 Node.js 的默认包管理器。它由一个命令行客户端(也称为 npm)和一个名为 npm 注册表的公共和付费私有包的在线数据库组成。

yarn:它代表Yet Another Resource Negotiator ,它是一个包管理器,就像 npm 一样。它由 Facebook 开发,现已开源。开发 yarn(当时)的目的是解决 npm 的性能和安全问题。

npm 和 yarn 的区别解释如下:

安装程序

  • npm: npm 会自动随 Node 一起安装。
  • 纱线:要安装纱线,必须安装 npm。
    npm install yarn --global

锁定文件

  • npm: NPM 生成一个“package-lock.json”文件。由于确定性和简单性之间的权衡,package-lock.json 文件稍微复杂一些。由于这种复杂性,package-lock 将为不同的 npm 版本生成相同的 node_modules 文件夹。在包锁定文件中,每个依赖项都会有一个与之关联的确切版本号。
  • yarn: Yarn 生成一个 'yarn.lock' 文件。纱线锁文件有助于轻松合并。由于锁定文件的设计,合并也是可预测的。

输出日志

  • install: npm 会创建大量的 npm 命令输出日志。它本质上是 npm 正在做什么的堆栈跟踪转储。
  • 补充:纱线输出日志干净,视觉可辨,简洁。为了便于理解,它们也以树的形式排序。

安装全局依赖

  • npm:要安装全局包,npm 的命令模板是:
    npm install -g package_name@version_number
  • yarn:安装全局包,yarn的命令模板为:
    yarn global add package_name@version_number

“为什么”命令:

  • npm: npm 还没有内置“为什么”功能。
  • yarn: Yarn 带有一个“why”命令,用于说明项目中存在依赖项的原因。例如,它是依赖项、本机模块或项目依赖项。

许可证检查器

  • npm:由于安装了依赖项,npm 没有许可证检查器,可以方便地描述项目绑定的所有许可证。
  • 纱线:纱线有一个整洁的许可证检查器。要查看它们,请运行
    yarn licenses list

获取包

  • npm: npm 在每个“npm install”命令期间从 npm 注册表中获取依赖项。
  • Yarn: yarn 在本地存储依赖项,并在“yarn add”命令期间从磁盘获取(假设依赖项(具有特定版本)在本地存在)。

在 npm 之后,纱线中的命令发生了变化

commandnpmyarn
Install dependenciesnpm installyarn
Install packagenpm install package_name
npm install package_name@version_number
yarn add package_name
yarn add package_name@version_number
Uninstall packagenpm uninstall package_nameyarn remove package_name
Install dev packagenpm install package_name –save-devyarn add package_name –dev
Update dev packagenpm update package_name
npm update package_name@version_number
yarn upgrade package_name
yarn upgrade package_name@version_number
View packagenpm view package_nameyarn info package_name
Global install packagenpm install -g package_nameyarn global add package_name

npm 和 yarn 的命令相同:

npmyarn
npm inityarn init
npm run [script]yarn run [script]
npm listyarn list
npm testyarn test
npm linkyarn link
npm login or logoutyarn login or logout
npm publishyarn publish