ChatGPT解决这个技术问题 Extra ChatGPT

何时在 NPM 上使用 Yarn?有什么区别?

Yarn 和 NPM 有什么区别?在写这个问题的时候,我只能在 Internet 上找到一些文章,显示像 this 这样的 NPM 命令的 Yarn 等价物是什么。

它们是否具有相同的功能(我知道 Yarn 会进行本地缓存,并且看起来您只需要下载一次包)但除此之外,从 NPM 迁移到 Yarn 还有什么好处?

这不是一个坏问题,不值得反对。也就是说,它确实需要充实一点才能使它成为一个真正的好问题。
快速 Google 出现 this。我相信这可能是 StackOverflow 的 too broad/not constructive,并且无论如何都可以进行更多研究。
@Aurora0001 当我搜索时,我看到了备忘单,但这不是我问题的答案!我想知道两者之间的差异,而不是命令之间的差异。请先阅读我的问题
@Asha您应该编辑您的问题以获得更多细节,并展示您已经研究过的内容。您希望找到什么样的差异?您是否试图找出这些库是如何实现的?您是否试图找出他们在解决问题方面的不同之处?如果你让你的问题更精确,它可能会很好,这取决于你问什么。 (根据您的要求,这些信息可能已经在 Google 上提供。)
@Asha,如果您证明您已经阅读过但不相关,那么展示研究工作会很有帮助。正如我所说,比较问题通常不适用于问答,如果您以不同的方式构建问题可能会更好。

m
msanford

更新:2018 年 3 月(有点晚了……)

从版本 5 开始,npm

生成一个名为 package-lock.json 的“锁定文件”,它可以像纱线(或任何其他)锁定机制一样修复整个依赖树,

制作了一个工具

--save 现在隐含在 npm i 中

更好的网络和缓存使用

npm 5.7.0 further introduced npm ci 命令通过仅安装在 package-lock.json 中找到的包来更快地在持续集成环境中安装依赖项(如果 package-lock.jsonpackage.json 不同步则报告错误)。

就个人而言,我仍然使用 npm

原来的

我不愿意直接从文档中引用,但他们很好地解释了原因,简洁到我看不出如何进一步总结这些想法。

大部分:

你总是知道你在每台开发机器上都得到了同样的东西它并行化了 npm 没有的操作,它更有效地利用了网络。它还可以更有效地利用其他系统资源(例如 RAM)。

人们对它有哪些生产经验?谁知道呢,对普通大众来说,它是个婴儿。

TL;来自 Yehuda Katz 的博士:

从一开始,Yarn 锁定文件就保证了在同一个存储库上重复运行 yarn 会产生相同的包。其次,Yarn 尝试使用冷缓存来获得良好的性能,尤其是使用暖缓存。最后,Yarn 让安全成为核心价值。

不错的博文

Gant Laborde 的“NPM vs Yarn Cheat Sheet

项目中稍长的版本:

快速:Yarn 缓存它下载的每个包,因此它永远不需要再次缓存。它还并行化操作以最大限度地利用资源,因此安装时间比以往任何时候都快。可靠:使用详细但简洁的锁定文件格式和确定性的安装算法,Yarn 能够保证在一个系统上运行的安装将在任何其他系统上以完全相同的方式运行。安全:在执行代码之前,Yarn 使用校验和来验证每个已安装包的完整性。

从 README.md 中:

离线模式:如果您以前安装过一个软件包,您可以在没有任何互联网连接的情况下再次安装它。确定性:无论安装顺序如何,都将在每台机器上以相同的方式安装相同的依赖项。网络性能:Yarn 有效地将请求排队并避免请求瀑布,以最大限度地提高网络利用率。多个注册表:从 npm 或 Bower 安装任何包,并保持包工作流程相同。网络弹性:单个请求失败不会导致安装失败。请求在失败时重试。平面模式:将不匹配的依赖版本解决为单个版本,以避免创建重复。更多表情符号。 🐈


你能告诉我 yarn 是否进行依赖解析 like npm v3 does 吗?我知道有一个 --flat 选项强制使用 real 平面结构,其中每个依赖项只允许安装一个版本,但默认行为是什么?谢谢。
优秀的答案。我想知道他们是否尝试在分叉、重命名和更改 install -g 的语法之前为 npm 做出贡献。
很好的帖子scotch.io/tutorials/…
W
WasiF

什么是 PNPM?

pnpm 使用硬链接和符号链接在磁盘上只保存一次模块的一个版本。例如,当使用 npm 或 Yarn 时,如果您有 100 个项目使用相同版本的 lodash,那么磁盘上将有 100 个 lodash 副本。使用 pnpm,lodash 将保存在磁盘上的一个位置,并且硬链接会将其放入应该安装的 node_modules 中。

结果,您节省了数千兆字节的磁盘空间,并且安装速度大大加快!如果您想详细了解 pnpm 创建的独特 node_modules 结构以及它为何能与 Node.js 生态系统完美配合,请阅读这篇小文章:Why should we use pnpm?

如何安装 PNPM?

npm install -g pnpm

如何使用 PNPM 安装 npm 包?

pnpm install -g typescript // or your desired package

PNPM 相对于 Yarn 和 NPM 的优势

https://i.stack.imgur.com/p38rV.png

点击查看完整检查基准

有关详细信息,请访问 https://www.npmjs.com/package/pnpm


M
Mathieu Gemard

试图为初学者提供更好的概述。

npm 在历史上(2010 年)一直是 JavaScript 最流行的包管理器。如果要使用它来管理项目的依赖项,可以键入以下命令:

npm init

这将生成一个 package.json 文件。它包含项目的所有依赖项。

然后

npm install

将创建一个目录 node_modules 并在其中下载依赖项(您添加到 package.json 文件中)。

它还将创建一个 package-lock.json 文件。该文件用于描述生成的依赖树。它允许开发人员安装完全相同的依赖项。例如,您可以想象一个开发人员将一个依赖项升级到 v2 然后 v3,而另一个直接升级到 v3。

npm 以不确定的方式安装依赖项,这意味着两个开发者可能具有不同的 node_modules 目录,从而导致不同的行为。 **npm 在 2018 年 2 月的声誉不佳:在 5.7.0 版本中发现了一个问题,在 Linux 系统上运行 sudo npm 会更改系统文件的所有权,从而永久破坏操作系统。

为了解决这些问题和其他问题,Facebook introduced a new package manager (2016):Yarn 是一个 更快、更安全、更可靠 的 JavaScript 包管理器。

您可以通过键入以下内容将 Yarn 添加到项目中:

yarn init

这将创建一个 package.json 文件。然后,安装依赖项:

yarn install

将生成文件夹 node_modulesYarn 还会生成一个名为 yarn.lock 的文件。此文件的用途与 package-lock.json 相同,但使用确定性和可靠的算法构建,从而导致一致的构建。

如果您使用 npm 启动项目,您实际上可以轻松迁移到 Yarn。 yarn 将消耗相同的 package.json。有关详细信息,请参阅 Migrating from npm

但是,每个新版本都对 npm 进行了改进,并且一些项目仍然使用 npm over yarn。


D
Daniel Danielecki

@msanford 的答案几乎涵盖了所有内容,但是,我缺少安全性(OWASP 的已知漏洞)部分。

您可以使用 yarn audit 检查它们,但是,您无法修复它们。这仍然是 GitHub (https://github.com/yarnpkg/yarn/issues/7075) 上的一个未解决问题。

npm

您可以使用 npm audit fix,因此您可以自行修复其中的一些问题。

他们两个,即npm audit & yarn audit 拥有自己的持续集成工具。它们分别是 https://github.com/IBM/audit-ci(用过,效果很好!)和 https://yarnpkg.com/package/audit-ci(没用过)。


Y
Yogesh Waghmare

npm:

JavaScript 的包管理器。 npm 是 npm 生态系统的命令行界面。它经过实战考验,出奇的灵活,每天被成千上万的 JavaScript 开发人员使用。 NPM 生成正确的锁定文件,而 Yarn 锁定文件在某些情况下可能已损坏,必须使用 yarn-tools 修复

纱:

一个新的 JavaScript 包管理器。 Yarn 会缓存它下载的每个包,因此它永远不需要再次缓存。它还并行化操作以最大限度地利用资源,因此安装时间比以往任何时候都快。 Yarn 不支持使用密码登录(而 NPM 支持)


什么样的登录?
g
ganesh kalje

当您使用 Yarn(使用 yarn add packagename)安装包时,它会将包放在您的磁盘上。在下一次安装期间,将使用此包而不是发送 HTTP 请求以从注册表中获取 tarball。

Yarn 带有一个方便的许可证检查器,如果你必须检查你所依赖的所有模块的许可证,它会变得非常强大。

如果您正在开发专有软件,那么您使用哪一个并不重要。使用 npm,你可以使用 npm-shrinkwrap.js,而你可以使用 yarn.lock 和 Yarn。

有关更多信息,请阅读以下博客

https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/


N
Nayeem Riddhi

优点::

支持并行安装和零安装等功能可提高性能

更安全

庞大的活跃用户社区

缺点::

不适用于旧版本的 Node.js(低于版本 5)

安装本机模块的问题

新PM

优点::

易于使用,尤其适用于使用旧版本的开发人员。

优化本地包安装,节省硬盘空间。

缺点::

安全漏洞仍然存在

结论:

Yarn 比 NPM 好吗?

在速度和性能方面,Yarn 比 NPM 更好,因为它执行并行安装。 Yarn 仍然比 NPM 更安全。但是,Yarn 使用的磁盘空间比 NPM 多。