纱线和 NPM 有什么不同? 在写这个问题的时候,我只能在互联网上找到一些文章,显示什么是 Yarn 等价于 NPM 命令,如 这个。
他们是否有相同的功能(我知道 Yarn 进行本地缓存,看起来你只需要下载一次软件包) ,但除此之外,从 NPM 转移到 Yarn 有什么好处吗?
从第五版开始,npm
npm
package-lock.json
--save
npm i
Npm 5.7.0进一步引入了 npm ci命令,通过仅安装在 package-lock.json中找到的包(如果 package-lock.json和 package.json没有同步,则报告错误) ,可以在持续集成环境中更快地安装依赖项。
npm ci
package.json
就我个人而言,我仍然使用 npm。
我不愿意直接引用博士的话,但是他们做了 很好的工作来解释为什么,足够简洁,我不知道如何进一步总结这些想法。
主要是:
你总是知道你在每个开发项目上得到的东西都是一样的 机器
它并行化了 npm没有的操作,并且
它使网络得到更有效的利用。
它也可以使 使用其他系统资源(如 RAM)更有效率。
人们对它有什么样的生产经验? 谁知道呢,它对于普通大众来说还是个婴儿。
从一开始纱线锁定文件就保证了这个过程的重复运行 纱线在相同的储存库中生产出相同的包装。 第二,纱试图有良好的性能,具有冷藏,但 特别是有温暖的储藏室。 最后,纱线使安全成为一个核心价值。
从一开始纱线锁定文件就保证了这个过程的重复运行 纱线在相同的储存库中生产出相同的包装。
第二,纱试图有良好的性能,具有冷藏,但 特别是有温暖的储藏室。
最后,纱线使安全成为一个核心价值。
“ NPM 与纱线作弊单”作者: Gant Laborde
快速: 纱缓存每个包,它下载,所以它永远不需要 它还并行化操作,以最大限度地利用资源 利用率,因此安装时间比以往任何时候都快。 可靠性: 使用详细但简洁的锁文件格式和 确定性算法安装,纱能够保证 在一个系统上运行的安装将以完全相同的方式在 任何其他系统。 安全: 纱线使用校验和来验证每个安装的完整性 包的代码执行之前。
快速: 纱缓存每个包,它下载,所以它永远不需要 它还并行化操作,以最大限度地利用资源 利用率,因此安装时间比以往任何时候都快。
可靠性: 使用详细但简洁的锁文件格式和 确定性算法安装,纱能够保证 在一个系统上运行的安装将以完全相同的方式在 任何其他系统。
安全: 纱线使用校验和来验证每个安装的完整性 包的代码执行之前。
脱机模式: 如果您已经安装了一个软件包之前,您可以再次安装它没有任何互联网连接。 确定性: 无论安装顺序如何,相同的依赖项将以相同的方式在每台计算机上安装。 网络性能: 有效地对请求进行排队,避免请求瀑布,以最大限度地提高网络利用率。 多注册中心: 从 npm 或 Bower 安装任何包,并保持您的包工作流相同。 网络弹性: 单个请求失败不会导致安装失败。请求在失败后重试。 平面模式: 解决依赖项版本与单个版本不匹配的问题,以避免创建重复。 更多表情符号。
当你安装一个使用纱线包(使用纱线添加包名) ,它 把软件包放在你的磁盘上。在下一次安装期间,将使用此包代替发送 HTTP 请求从注册中心获取 tarball。
纱带有一个 方便的执照检查员,它可以成为真正强大的情况下,您必须检查所有模块的许可证,您所依赖的。
如果你正在研究专有软件,那么你使用哪一种并不重要。使用 npm,您可以使用 npm-crinkwraph。Js,你可以用 Yarn.lock 和 Yarn.lock。
欲了解更多信息,请阅读以下博客
Https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/
pnpm使用硬链接和符号链接在磁盘上只保存一次模块的一个版本。例如,当使用 npm 或 Yarn 时,如果有100个项目使用相同版本的 loash,那么磁盘上将有100个 loash 副本。使用 pnpm,loash 将被保存在磁盘上的一个单独位置,并且一个硬链接将把它放到应该安装它的 node _ module 中。
pnpm
因此,您在磁盘上节省了十亿字节的空间,并且安装速度快得多!如果您想了解更多关于 pnpm 创建的惟一 node _ module 结构以及它为什么能够在 Node.js 生态系统中很好地工作的细节,请阅读这篇小文章: 我们为什么要使用 pnpm?
npm install -g pnpm
pnpm install -g typescript // or your desired package
PNPM
Yarn
NPM
下面是进度条,显示了 NPM、 YARN和 PNPM所花费的安装时间(进度条越短越好)
YARN
详情请浏览 https://www.npmjs.com/package/pnpm
试图给初学者一个更好的概述。
历史上(2010年) npm 一直是 JavaScript 最受欢迎的包管理器。如果要使用它管理项目的依赖项,可以键入以下命令:
npm init
这将生成一个 package.json文件。它包含项目的所有依赖项。
然后
npm install
将创建一个目录 node_modules并下载其中的依赖项(您添加到 package.json文件中的依赖项)。
node_modules
它还将创建一个 package-lock.json文件。此文件用于描述生成的依赖关系树。它允许开发人员正确地安装相同的依赖项。例如,您可以想象一个开发人员将依赖关系升级到 v2,然后升级到 v3,而另一个开发人员直接升级到 v3。
Npm 以一种不确定的方式安装依赖项,这意味着两个开发人员可能有一个不同的 node_modules目录,从而产生 不同的行为。例如,* * npm 就遭受了不好的名声 2018年2月: 在5.7.0版本中发现了一个问题,在 Linux 系统上运行 sudo npm 会改变系统文件的所有权,从而永久性地破坏操作系统。
为了解决这些问题和其他问题,Facebook 推出了一个新的软件包管理器(2016) : 纱线,一个用于 JavaScript 的 更快,更安全,更可靠包管理器。
可以通过键入以下命令将 纱线添加到项目中:
yarn init
这将创建一个 package.json文件:
yarn install
将生成一个文件夹 node_modules。纱线还将生成一个名为 yarn.lock的文件。该文件与 package-lock.json用途相同,但是使用确定性和可靠的算法构造,从而导致一致的构造。
yarn.lock
如果使用 Npm开始一个项目,实际上可以很容易地迁移到 纱线。纱线将消耗相同的 package.json。有关详细信息,请参阅 从 npm 迁移。
然而,随着每个新版本的发布,Npm得到了改进,一些项目仍然使用 Npm而不是 纱线。
Npm :
纱线 强力 > :
@ msanford 给出的答案几乎涵盖了所有内容,然而,我忽略了安全性(OWASP 的已知漏洞)部分。
纱线
您可以使用 yarn audit检查它们,但是无法修复它们。这在 GitHub (https://github.com/yarnpkg/yarn/issues/7075)上仍然是一个未解决的问题。
yarn audit
Npm
您可以使用 npm audit fix,因此其中一些您可以自己修复。
npm audit fix
这两个工具,即 npm audit和 yarn audit都有自己的持续集成工具。这些分别是 https://github.com/IBM/audit-ci(使用,工程伟大!)和 https://yarnpkg.com/package/audit-ci(尚未使用)。
npm audit
优点:
支持诸如并行安装和 零-安装导致更好的性能
更安全
大型活跃用户社区
缺点:
不适用于旧版本的 Node.js (低于版本5)
安装本机模块时出现的问题
易于使用,特别是对于使用较老版本的开发人员 版本。
优化本地软件包安装,节省硬盘空间。
结论:
纱线比 NPM 好吗?
在速度和性能方面,纱线优于 NPM,因为它执行并行安装。纱线仍然比 NPM 更安全。然而,纱线使用更多的磁盘空间比 NPM。