56

我使用的是react-native全局安装的包npm。现在它在执行init命令后的第一行显示。以下:

Installing react-native from npm...
Consider installing yarn to make this faster: https://yarnpkg.com

所以我检查了那个网站,它看起来对我来说很有趣,但我不知道它会是什么。起初,我以为我需要brew安装yarn,所以我可以使用 yarn 来安装npm。但现在我认为这yarnnpm. 这是一个正确的说法吗?

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

我知道对于像AtomVisual Studio Code这样的软件来说,拥有自己的包管理器很有用。但是对于开发,我看不出有人愿意使用四种不同的包管理器的原因(brew 用于“主要软件”,yarn用于npm包,npm 用于后端模块,bower 用于前端库)。如何解开这个包管理器森林?

4

4 回答 4

47

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

那么每个系统的目的是:

  1. brew : 安装软件,即准备使用 wget 等应用程序。
  2. npm:安装包(库),即帮助您构建自己的应用程序的功能。
  3. yarn : 也安装包。

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

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

于 2016-11-03T09:16:59.910 回答
6

纱线与 npm

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

yarn 相对于 npm 的最大优势是

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

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

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

于 2017-03-01T00:47:56.817 回答
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]

参考文献

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

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

和官方公告

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

于 2018-02-22T09:08:37.867 回答
3

YarnNPM一样,是 Node.JS 的包管理器。Yarn 由 Facebook 打造。它比 NPM 更快,功能更多。

他们的主要卖点是:

  • 安全性使用yarn.lock文件(类似于 NPM 的npm-shrinkwrap.json)所有依赖项都锁定在确切的版本上。因此,您不再有“<strong>但它适用于我的机器”的困扰了。每个人都在yarn.lock文件中锁定了相同的版本
  • Speed Yarn 使用(快速)代理和(离线)缓存来更快地交付您的模块。它还有一个 LICENSE 检查器,用于检查所有依赖模块的许可证。
于 2017-04-23T11:05:06.937 回答