brew,yarn和npm有什么区别?

时间:2016-11-03 08:14:21

标签: npm homebrew bower package-managers yarnpkg

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

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

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

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

我了解对于像AtomVisual Studio Code这样的软件来说,拥有自己的软件包管理器非常有用。但是对于开发,我没有看到为什么有人想要使用四个不同的包管理器的原因(为yarn包提供'主要软件' npm,为后端模块提供npm和前端图书馆的凉亭)。如何解决这个包管理器森林?

4 个答案:

答案 0 :(得分:24)

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

然后每个系统的目的是:

  1. brew :安装软件,即准备使用wget等应用程序。
  2. npm :安装包(库),即帮助您构建自己的应用程序的功能。
  3. 纱线:还安装包。
  4. 纱线比npm有一些优势,主要有两个是速度和可预测性。 Yarn重用了npm的package.json文件并且没有改变它的结构。因此,您可以运行yarn install而不是npm install,理论上一切都会自动生效。

    P.S。我同意,https://yarnpkg.com没有足够的背景知道为什么我们需要另一个包裹管理系统,但there is a great article填补了这个空白。

答案 1 :(得分:4)

纱线vs npm

yarn和npm都是管理模块安装和依赖项。纱线的建立是为了解决npm的一些缺点。

纱线在npm上的最大优势是

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

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

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

答案 2 :(得分:3)

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

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

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

纱线的命令就像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

答案 3 :(得分:1)

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

他们的主要卖点是:

  • 安全使用 yarn.lock 文件(类似于NPM&#39; npm-shrinkwrap.json ) 所有依赖项都锁定在确切的版本上。所以,你不会有“但它在我的机器上运行”的努力了。每个人都有 相同版本锁定在 yarn.lock 文件
  • Speed Yarn使用(快速)代理和(离线)缓存来提供您的服务 模块更快。它还有一个LICENSE检查器,用于检查 所有依赖模块的许可证。