npm 5.7.0 further introducednpm ci命令,通过只安装在package-lock.json中找到的软件包,在持续集成环境中更快地安装依赖项(如果package-lock.json和package.json不同步,则报告错误)。
就个人而言 *,我仍然使用npm。
原创
我不愿意直接引用文档,但他们在解释原因方面做得很好,足够简洁,我不知道如何进一步总结这些想法。 拉尔森: 1.你总是知道你在每一台开发机器上得到同样的东西 1.它简化了npm没有的操作, 1.更有效地利用网络。 1.它也可以使use of other system resources (such as RAM)更有效。 人们对它的生产经验如何?谁知道呢,它对普通大众来说是一个婴儿。
为了解决这些问题和其他问题,Facebook introduced a new package manager(2016):Yarnafaster,more security,and more reliablypackage manager for JavaScript. 您可以通过键入以下命令将Yarn添加到项目中: yarn init个 这将创建一个package.json文件。然后,使用以下命令安装依赖项: yarn install个 将生成一个文件夹node_modules。Yarn还将生成一个名为yarn.lock的文件。该文件与package-lock.json的目的相同,但使用确定性和可靠的算法构建,从而导致一致的构建。 如果你用npm启动了一个项目,你实际上可以很容易地迁移到Yarn。yarn将消耗相同的package.json。更多细节请参见Migrating from npm。 然而,npm在每个新版本中都得到了改进,一些项目仍然使用npm而不是yarn。
7条答案
按热度按时间q43xntqr1#
更新时间:2018年3月(有点晚...)
自版本5起,
npm
package-lock.json
的“锁文件”,它以与yarn(或任何其他)锁定机制相同的方式修复整个依赖关系树,--save
现在隐含为npm i
npm 5.7.0 further introduced
npm ci
命令,通过只安装在package-lock.json
中找到的软件包,在持续集成环境中更快地安装依赖项(如果package-lock.json
和package.json
不同步,则报告错误)。npm
。原创
我不愿意直接引用文档,但他们在解释原因方面做得很好,足够简洁,我不知道如何进一步总结这些想法。
拉尔森:
1.你总是知道你在每一台开发机器上得到同样的东西
1.它简化了
npm
没有的操作,1.更有效地利用网络。
1.它也可以使use of other system resources (such as RAM)更有效。
人们对它的生产经验如何?谁知道呢,它对普通大众来说是一个婴儿。
TL;DR from Yehuda Katz:
从一开始,Yarn锁文件就保证在同一个存储库上重复运行yarn会产生相同的包。
第二,Yarn尝试使用冷缓存来获得良好的性能,特别是使用热缓存。
最后,Yarn使安全成为核心价值。
不错的博文
《NPM vs Yarn Cheat Sheet》Gant拉博德
略长版本from the project:
快速:Yarn会缓存它下载的每个包,这样它就再也不需要下载了。它还将操作并行化,以最大限度地提高资源利用率,因此安装时间比以往任何时候都快。
可靠性:使用详细但简洁的锁定文件格式和确定性的安装算法,Yarn能够保证在一个系统上运行的安装在任何其他系统上都将以完全相同的方式运行。
安全:Yarn使用校验和来验证每个已安装包的完整性,然后再执行其代码。
从the README.md开始:
dphi5xsq2#
试图为初学者给予更好的概述。
npm在历史上(2010年)一直是最受欢迎的JavaScript包管理器。如果您想使用它来管理项目的依赖项,可以输入以下命令:
字符串
这将生成一个
package.json
文件。它包含项目的所有依赖项。然后
型
将创建一个目录
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):Yarnafaster,more security,and more reliablypackage manager for JavaScript.
您可以通过键入以下命令将Yarn添加到项目中:
yarn init
个这将创建一个
package.json
文件。然后,使用以下命令安装依赖项:yarn install
个将生成一个文件夹
node_modules
。Yarn还将生成一个名为yarn.lock
的文件。该文件与package-lock.json
的目的相同,但使用确定性和可靠的算法构建,从而导致一致的构建。如果你用npm启动了一个项目,你实际上可以很容易地迁移到Yarn。yarn将消耗相同的
package.json
。更多细节请参见Migrating from npm。然而,npm在每个新版本中都得到了改进,一些项目仍然使用npm而不是yarn。
bz4sfanl3#
@msanford的答案几乎涵盖了所有内容,但是,我错过了安全性(OWASP的已知漏洞)部分。
Yarn
您可以使用
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(没有使用过)。eanckbw94#
npm:
Yarn:
1.一个新的JavaScript包管理器。Yarn缓存它下载的每个包,因此它永远不需要再次。它还并行操作,以最大限度地提高资源利用率,因此安装时间比以往更快。
uelo1irk5#
当你使用Yarn(使用yarn add packagrance)安装一个软件包时,它会将软件包放在你的磁盘上。在下一次安装过程中,这个软件包将被使用,而不是发送一个HTTP请求来从注册表中获取tarball。
Yarn附带了一个方便的许可证检查器,如果你必须检查你所依赖的所有模块的许可证,它会变得非常强大。
如果你正在使用专有软件,那么你使用哪一个并不重要。使用npm,你可以使用npm-shrinkwrap.js,而你可以使用yarn.lock和Yarn。
欲了解更多信息,请阅读以下博客
https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/
mrwjdhj36#
Yarn
优点:
缺点:
NPM
优点:
缺点:
在速度和性能方面,Yarn比NPM更好,因为它执行并行安装。Yarn仍然比NPM更安全。但是,Yarn比NPM使用更多的磁盘空间。
avwztpqn7#
Yarn从版本4开始包含一个命令
yarn upgrade-interactive
。以前它必须手动安装,但现在这个核心插件是内置的。它有一个很好的CLI界面,可以让你选择更新版本,可能会升级到依赖项的新主版本。在npm中,没有这样的命令。最接近的NPM等效是3rd party packagenpm-check-updates
,必须手动安装。NPM有
npm link
命令 *,它实际上可以工作 *。它可以让你'安装'本地软件包-通常是一个库-在你使用它的其他本地项目中进行测试。这个命令被称为problematic or non-working in yarn。yarn的另一个优势是工作区管理的强大工具,使其甚至可以与lerna相媲美,但从版本8开始,即使是npm也有可用的工作区实用程序。