brew,yarn和npm有什么区别?

use*_*007 32 homebrew package-managers npm bower yarnpkg

我正在使用react-native我在全球安装的软件包npm.现在它在执行init命令后的第一行说.下列:

Installing react-native from npm...
Consider installing yarn to make this faster: https://yarnpkg.com
Run Code Online (Sandbox Code Playgroud)

所以我正在检查那个网站,它看起来很有趣,但我不知道它会是什么.起初,我认为我需要brew安装yarn,所以我可以安装纱线npm.但现在我认为这yarn是一个替代品npm.这是正确的陈述吗?

为什么我要拥有这么多包管理器?

我知道像AtomVisual Studio Code这样的软件有自己的包管理器很有用.但是对于开发,我没有看到有人想要使用四个不同的包管理器的原因(brew用于'主要软件',yarn用于npm包,npm用于后端模块和bower用于前端库).如何解决这个包管理器森林?

Mon*_*nor 31

我不熟悉brew,但我想你的意思是用于macOS的Homebrew软件包管理系统.

那么每个系统的目的是:

  1. brew:安装软件,即准备使用像wget这样的应用程序.
  2. npm:安装包(库),即帮助您构建自己的应用程序的功能.
  3. 纱线:还安装包装.

纱线比npm有一些优势,主要有两个是速度和可预测性.Yarn重用了npm的package.json文件,并没有改变它的结构.因此,你可以运行yarn install而不是npm install理论上一切都会自动运行.

PS我同意,https: //yarnpkg.com没有足够的背景知道为什么我们需要另一个包管理系统,但有一篇很好的文章填补了这个空白.

  • Heroku CLI(软件)可以使用 npm 或 brew 安装。这是否意味着缺少一些灰色区域?https://devcenter.heroku.com/articles/heroku-cli (2认同)

小智 6

纱线与 npm

yarn 和 npm 都是管理模块安装和依赖项。Yarn 旨在解决 npm 的一些缺点。

纱线相对于 npm 的最大优势是

  1. 使用 yarn 安装包是并行的,因此包安装速度更快。
  2. package.json在版本号方面可能非常松散。yarn.lock(类似于 npm shirkwrap)将其锁定,以便具有相同package.json 的两台机器始终安装完全相同的包。

  3. yarn 允许您检查安装某些软件包的原因(了解依赖关系树)

参考:https : //www.sitepoint.com/yarn-vs-npm/


Sun*_*arg 5

Yarn 是由 Facebook、Google、Exponent 和 Tilde 构建的 JavaScript 包管理器。它的创建是为了删除或克服 npm 中缺少的功能。与 npm 相比,它有

  • 增强的安全性
  • 离线模式
  • 并行安装 - 因此安装速度更快

另一个主要区别是yarn.lock文件,但在 npm 之后^5.x.x他们也提供了package-lock.json文件。

而yarn的命令就像npm:

# Starting a new project
npm init === yarn init

# Installing all the dependencies of the project
npm install === yarn or yarn install

# Adding a dependency
npm install [package] === yarn add [package] # The package is saved to your package.json immediately.
npm install  [package]@[version] === yarn add [package]@[version]
npm install [package]@[tag] === yarn add [package]@[tag]

# Add a dev dependency
npm install [package] --save-dev === yarn add [package] --dev

# Upgrading a dependency
npm update [package] === yarn upgrade [package]
npm update [package]@[version] === yarn upgrade [package]@[version]
npm update [package]@[tag] === yarn upgrade [package]@[tag]

# Removing a dependency
npm uninstall [package] === yarn remove [package]

# View registry information
npm view [package] === yarn info [package]

# List installed packages
npm list === yarn list
npm list --depth === yarn list --depth=0

# Install packages globally
npm install -g [package] === yarn global addb [package]

# Run a defined package script
npm run [script] === yarn run [script]
Run Code Online (Sandbox Code Playgroud)

参考文献

https://www.sitepoint.com/yarn-vs-npm/

https://scotch.io/@brian_kimo/npm-vs-yarn

和官方公告

https://code.facebook.com/posts/1840075619545360