提问者:小点点

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


纱线和NPM有什么区别?在写这个问题的时候,我只能在互联网上找到一些文章,显示像这样的NPM命令的纱线等价是多少。

他们有相同的功能(我知道Yarn做本地缓存,看起来你只需要下载一次包),但除此之外,从NPM转移到Yarn有什么好处吗?


共3个答案

匿名用户

从第5版开始,npm

  • 生成名为包锁的“锁文件”。json修复整个依赖关系树,与Thread(或任何其他)锁定机制修复依赖关系树的方式基本相同,
  • 已经制作了一个工具
  • --save现在表示为npm i
  • 更好的网络和缓存使用率

npm 5.7。0进一步引入了npm ci命令,通过仅安装包锁中的包,在连续集成环境中更快地安装依赖项。json(如果包锁.json包.json未同步,则报告错误)。

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

我不愿意直接引用文档中的内容,但它们很好地解释了原因,足够简洁,以至于我不知道如何进一步总结这些想法。

主要是:

>

它并行化npm不并行的操作,并且

它更有效地利用网络。

它还可以更有效地利用其他系统资源(如RAM)。

人们的生产经验是什么?谁知道呢,对公众来说,这是一个婴儿。

从一开始,Thread lockfile就保证在同一存储库中重复运行Thread会产生相同的包。

其次,纱线试图有良好的性能,用冷缓存,但特别是用热缓存。

最后,纱线使安全成为核心价值。

Gant Labode的“NPM vs纱线备忘单”

快速:Thread将下载的每个包都缓存起来,这样就不需要再下载了。它还并行化操作以最大限度地提高资源利用率,因此安装时间比以往任何时候都要快。

可靠:使用详细但简洁的锁文件格式和安装的确定性算法,Yarn能够保证在一个系统上运行的安装在任何其他系统上都完全相同。

安全:Yarn在执行代码之前使用校验和来验证每个已安装包的完整性。

  • 脱机模式:如果您以前安装过软件包,则无需任何internet连接即可重新安装

匿名用户

试图给初学者一个更好的概述。

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

npm init

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

然后

npm install

将创建一个目录node\u modules,并下载其中的依赖项(您添加到package.json文件)。

它还将创建一个包锁。json文件。此文件用于描述生成的从属关系树。它允许开发人员执行安装相同的依赖项。例如,您可以想象一个开发人员将一个依赖项升级到v2,然后升级到v3,而另一个开发人员则直接升级到v3。

npm以非确定性的方式安装依赖项,这意味着两个开发人员可能拥有不同的节点\ u模块目录,从而导致不同的行为**npm声誉不佳,例如2018年2月:在5.7版中发现了一个问题。0中,在Linux系统上运行sudo npm将更改系统文件的所有权,从而永久破坏操作系统。

为了解决这些问题和其他问题,Facebook推出了一个新的包管理器(2016):一个更快、更安全、更可靠的JavaScript包管理器。

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

纱线初始

这将创建一个包。json文件。然后,使用以下内容安装依赖项:

纱线安装

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

如果你用npm开始一个项目,你实际上可以很容易地迁移到纱线。纱线将消耗相同的package.json。有关更多详细信息,请参阅从npm迁移。

然而,npm随着每个新版本的发布而不断改进,一些项目仍然使用npm而不是纱线。

匿名用户

pnpm使用硬链接和符号链接在磁盘上只保存一个版本的模块。例如,当使用npm或Thread时,如果有100个项目使用相同版本的lodash,则磁盘上将有100个lodash副本。使用pnpm,lodash将保存在磁盘上的单个位置,并通过一个硬链接将其放入应安装的节点_模块中。

因此,您在磁盘上节省了千兆字节的空间,并且安装速度大大加快!如果您想了解更多关于pnpm创建的独特node_模块结构的详细信息,以及为什么它可以与节点配合使用。js生态系统,阅读这篇小文章:我们为什么要使用pnpm?

npm install -g pnpm
pnpm install -g typescript // or your desired package

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