brew、yarn 和 npm 有什么区别?
What is the difference between brew, yarn, and npm?
我使用的是 react-native
包,我用 npm
全局安装了它。现在它在执行 init
命令后的第一行说。以下:
Installing react-native from npm...
Consider installing yarn to make this faster: https://yarnpkg.com
所以我查看了那个网站,我觉得它很有趣,但我不完全知道它会是什么。起初,我以为我需要brew
来安装yarn
,所以我可以yarn来安装npm
。但现在我认为 yarn
是 npm
的替代品。这是正确的说法吗?
为什么我想要这么多包管理器?
我知道像 Atom or Visual Studio Code 这样的软件有自己的包管理器是很有用的。但是对于开发,我不明白为什么有人愿意使用四种不同的包管理器(brew 用于 'primary software',yarn
用于 npm
包,npm 用于后端模块,bower 用于前端-结束图书馆)。这个包管理器林怎么解开?
我不熟悉 brew,但我想你指的是 macOS 的 Homebrew 软件包管理系统。
那么各系统的用途是:
- brew: 安装软件,即准备使用 wget 等应用程序。
- npm:安装包(库),即帮助您构建自己的应用程序的功能片段。
- yarn: 也安装包。
Yarn 比 npm 有一些优势,主要的两个是速度和可预测性。 Yarn 重用了 npm 的 package.json 文件并且没有改变它的结构。因此,您可以 运行 yarn install
而不是 npm install
并且理论上一切都会自动运行。
P.S。我同意,https://yarnpkg.com doesn't have enough background on why the hell we need another package management system, but there is a great article 填补了这个空白。
yarn 与 npm
yarn 和 npm 都是管理模块安装和依赖项。 Yarn 是为了解决 npm 的一些缺点而构建的。
yarn 相对于 npm 的最大优势是
- 使用 yarn 安装包是并行的,因此包安装速度更快。
package.json 在版本号方面可以非常宽松。 yarn.lock(类似于 npm shirkwrap)将其锁定,以便具有相同 package.json 的两台机器始终安装准确的相同的包裹。
yarn
允许你检查为什么安装了一些包(了解依赖树)
Yarn 与 NPM 一样,是 Node.JS 的包管理器。
Yarn 由 Facebook 构建。
它比 NPM 更快,功能更多。
他们的主要卖点是:
- Security With yarn.lock 文件(类似于 NPM 的 npm-shrinkwrap.json)
所有依赖项都锁定在确切的版本上。因此,您不会再为“但它在我的机器上工作”而苦恼。每个人都有
yarn.lock 文件
中锁定的相同版本
- Speed Yarn 使用(快速)代理和(离线)缓存来交付您的
模块更快。它还有一个许可证检查器,检查
所有依赖模块的许可证。
Yarn 是一个 JavaScript 包管理器,由 Facebook、Google、Exponent 和 Tilde 构建。它的创建是为了删除或克服 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
和官宣
我使用的是 react-native
包,我用 npm
全局安装了它。现在它在执行 init
命令后的第一行说。以下:
Installing react-native from npm...
Consider installing yarn to make this faster: https://yarnpkg.com
所以我查看了那个网站,我觉得它很有趣,但我不完全知道它会是什么。起初,我以为我需要brew
来安装yarn
,所以我可以yarn来安装npm
。但现在我认为 yarn
是 npm
的替代品。这是正确的说法吗?
为什么我想要这么多包管理器?
我知道像 Atom or Visual Studio Code 这样的软件有自己的包管理器是很有用的。但是对于开发,我不明白为什么有人愿意使用四种不同的包管理器(brew 用于 'primary software',yarn
用于 npm
包,npm 用于后端模块,bower 用于前端-结束图书馆)。这个包管理器林怎么解开?
我不熟悉 brew,但我想你指的是 macOS 的 Homebrew 软件包管理系统。
那么各系统的用途是:
- brew: 安装软件,即准备使用 wget 等应用程序。
- npm:安装包(库),即帮助您构建自己的应用程序的功能片段。
- yarn: 也安装包。
Yarn 比 npm 有一些优势,主要的两个是速度和可预测性。 Yarn 重用了 npm 的 package.json 文件并且没有改变它的结构。因此,您可以 运行 yarn install
而不是 npm install
并且理论上一切都会自动运行。
P.S。我同意,https://yarnpkg.com doesn't have enough background on why the hell we need another package management system, but there is a great article 填补了这个空白。
yarn 与 npm
yarn 和 npm 都是管理模块安装和依赖项。 Yarn 是为了解决 npm 的一些缺点而构建的。
yarn 相对于 npm 的最大优势是
- 使用 yarn 安装包是并行的,因此包安装速度更快。
package.json 在版本号方面可以非常宽松。 yarn.lock(类似于 npm shirkwrap)将其锁定,以便具有相同 package.json 的两台机器始终安装准确的相同的包裹。
yarn
允许你检查为什么安装了一些包(了解依赖树)
Yarn 与 NPM 一样,是 Node.JS 的包管理器。
Yarn 由 Facebook 构建。
它比 NPM 更快,功能更多。
他们的主要卖点是:
- Security With yarn.lock 文件(类似于 NPM 的 npm-shrinkwrap.json) 所有依赖项都锁定在确切的版本上。因此,您不会再为“但它在我的机器上工作”而苦恼。每个人都有 yarn.lock 文件 中锁定的相同版本
- Speed Yarn 使用(快速)代理和(离线)缓存来交付您的 模块更快。它还有一个许可证检查器,检查 所有依赖模块的许可证。
Yarn 是一个 JavaScript 包管理器,由 Facebook、Google、Exponent 和 Tilde 构建。它的创建是为了删除或克服 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
和官宣