Ash*_*sha 79 javascript npm yarnpkg
Yarn和NPM有什么区别?在编写这个问题的时候,我只能在网上找什么展示就像一个NPM命令的纱线等同放着清单上的一些文章此.
它们是否具有相同的功能(我知道Yarn会进行本地缓存,看起来您只需要下载一次包)但除此之外从NPM转移到Yarn有什么好处?
msa*_*ord 57
从第5版开始, npm
package-lock.json
整个依赖树,就像纱线(或任何其他)锁定机制一样,--save
现在暗示了 npm i
npm 5.7.0进一步介绍了npm ci
在连续集成环境中更快速地安装依赖项的命令,只需安装中找到的软件包package-lock.json
(如果package-lock.json
和package.json
未同步则报告错误).
就个人而言,我仍然使用npm
.
我不愿直接引用文档,但是他们很好地解释了为什么,简明扼要地说我没有看到如何进一步总结这些想法.
大部分:
你总是知道你在每台开发机器上都得到了同样的东西
它对npm
没有的操作进行了并列化
它可以更有效地使用网络.
它也可以更有效地使用其他系统资源(例如RAM).
人们的生产经历是什么?谁知道,这对大众来说是婴儿.
从一开始,Yarn锁定文件保证在同一个存储库上重复运行yarn会产生相同的包.
其次,Yarn尝试使用冷缓存来获得良好的性能,尤其是使用热缓存.
最后,纱线使安全成为核心价值.
Gant Laborde撰写的" NPM vs Yarn Cheat Sheet "
快速:Yarn缓存它下载的每个包,因此它永远不需要再次使用.它还可以并行化操作以最大限度地利用资源,因此安装时间比以往更快.
可靠:使用详细但简洁的锁文件格式和安装的确定性算法,Yarn能够保证在一个系统上运行的安装在任何其他系统上的工作方式完全相同.
安全:Yarn在执行代码之前使用校验和来验证每个已安装软件包的完整性.
- 离线模式:如果您之前已经安装过软件包,则无需任何互联网连接即可重新安装.
- 确定性:无论安装顺序如何,相同的依赖关系将以相同的方式安装在每台机器上.
- 网络性能:Yarn有效地排队请求并避免请求瀑布,以最大化网络利用率.
- 多个注册表:从npm或Bower安装任何包,并使您的包工作流保持不变.
- 网络恢复能力:单个请求失败不会导致安装失败.请求在失败时重试.
- 平面模式:将不匹配的依赖项版本解析为单个版本,以避免创建重复项.
- 更多表情符号.
Mat*_*ard 10
试图为初学者提供更好的概述。
npm历史上(2010 年)一直是最流行的 JavaScript 包管理器。如果您想使用它来管理项目的依赖项,可以键入以下命令:
npm init
Run Code Online (Sandbox Code Playgroud)
这将生成一个package.json
文件。它包含项目的所有依赖项。
然后
npm install
Run Code Online (Sandbox Code Playgroud)
将创建一个目录node_modules
并下载其中的依赖项(您添加到package.json
文件中的)。
它还将创建一个package-lock.json
文件。该文件用于描述生成的依赖关系树。它允许开发人员安装完全相同的依赖项。例如,您可以想象一位开发人员将依赖项升级到 v2,然后升级到 v3,而另一个开发人员则直接升级到 v3。
npm以不确定的方式安装依赖项,这意味着两个开发人员可能有不同的node_modules
目录,从而导致不同的行为。**npm 声誉不佳,例如在 2018 年 2 月:在 5.7.0 版本中发现了一个问题,在 Linux 系统上运行 sudo npm 会更改系统文件的所有权,从而永久破坏操作系统。
为了解决这些问题和其他问题,Facebook 推出了一个新的包管理器(2016 年):Yarn是一个更快、更安全、更可靠的JavaScript 包管理器。
您可以通过键入以下内容将Yarn添加到项目中:
yarn init
这将创建一个package.json
文件。然后,使用以下命令安装依赖项:
yarn install
node_modules
将生成一个文件夹。Yarn还会生成一个名为yarn.lock
. 该文件的用途与 相同,package-lock.json
但使用确定性且可靠的算法构建,从而实现一致的构建。
如果您使用npm启动了一个项目,您实际上可以轻松迁移到Yarn。纱线将消耗相同的package.json
。有关更多详细信息,请参阅从 npm 迁移。
然而,npm在每个新版本中都得到了改进,并且一些项目仍然使用npm而不是yarn。
@msanford 的答案几乎涵盖了所有内容,但是,我缺少安全性(OWASP 的已知漏洞)部分。
纱
您可以使用 检查它们yarn audit
,但是,您无法修复它们。这仍然是 GitHub 上的一个未决问题 ( https://github.com/yarnpkg/yarn/issues/7075 )。
新项目管理
您可以使用npm audit fix
,因此其中一些您可以自己修复。
他们都有npm audit
自己yarn audit
的持续集成工具。这些分别是https://github.com/IBM/audit-ci(已使用,效果很好!)和https://yarnpkg.com/package/audit-ci(尚未使用)。
pnpm
使用硬链接和符号链接在磁盘上只保存一个版本的模块一次。例如,当使用 npm 或 Yarn 时,如果您有 100 个项目使用相同版本的 lodash,则磁盘上将有 100 个 lodash 副本。使用 pnpm,lodash 将被保存在磁盘上的一个位置,并且一个硬链接会将它放入应该安装它的 node_modules 中。
因此,您可以在磁盘上节省数千兆字节的空间,并且安装速度更快!如果您想了解更多有关 pnpm 创建的独特 node_modules 结构的详细信息,以及为什么它可以在 Node.js 生态系统中正常工作,请阅读这篇小文章:我们为什么要使用 pnpm?
npm install -g pnpm
Run Code Online (Sandbox Code Playgroud)
pnpm install -g typescript // or your desired package
Run Code Online (Sandbox Code Playgroud)
PNPM
过Yarn
和的好处NPM
这是进度条,显示NPM
,YARN
和PNPM
( 越短越好)所花费的安装时间
有关更多详细信息,请访问https://www.npmjs.com/package/pnpm
小智 5
节点管理:
纱线:
归档时间: |
|
查看次数: |
14220 次 |
最近记录: |