标签:yarnpkg javascript node-js npm
我想问一下你最喜欢的JS包管理器是什么?
我看到一些关于纱线和npm的文章.但我不确定对我来说什么更好.我刚开始学习JS.
现在纱线和npm之间的区别对我来说就像可乐品牌之间的区别.
解决方法:
有时候我们只有npm,但它解决了依赖关系和缓存这么多问题,而另一个工具已经诞生了(纱线).通常它使用本地缓存来解决依赖关系,例如,在运行CI作业时这是至关重要的,这些作业几乎总是在相同的环境中运行,而高带宽在您支付云服务中的数据时成本很高.这意味着在旧的npm版本中,当你运行npm install并且你有deps时
第一点
请理解,纱线是建立在npm包和https://www.npmjs.com/的顶部,这意味着它们都使用NPM注册表来解析包.所以如果你运行npm install lodash@1.0.0.或纱线添加lodash@1.0.0.你会得到相同的结果
增量安装
react@16.0.0
在每个新构建中,两个依赖项再次从Internet下载. Yarn在下面使用yarn.lock,它将你的package.json文件与yarn.lock进行比较,并确定需要另外获取哪些包,只是逐步安装新的依赖项
多线程
yarn提供并行安装不依赖于螺纹的包装.从npm安装开始,它可以将安装时间缩短到1/10
版本锁定
如前所述,纱线在每次安装后都会生成yarn.lock,它会持久化所有已安装软件包的版本(因为您可能知道软件包可以具有依赖关系,并且依赖关系也可以有自己的依赖关系),因此它可以构建无限的依赖关系树,这可以导致对非常糟糕的冲突.让我们想象一下这个场景
- lodash^1
- super_module@0.0.1
- - lodash@1.0.0
- another_module@0.0.01
- - lodash@1.x.x
想象一下,当another_module的维护者决定将lodash撞到破坏更改版本1.2.0时,可能发生的情况是,过去的npm可能会获取同一个库的2个不同实例,而2个不同的版本可能会导致非常奇怪的行为.因为你的模块中没有确切的锁定(你接受任何semver版本^ 1.xx和^ 2.xx这意味着两个子模块都能满足你的要求但是获取不同的版本.纱线将锁定你的纱线.锁定AT为项目添加新包装的时间,这意味着当您的项目中的其他开发人员检查项目时,他也将拥有相同的纱线.纱线和纱线将最终“模仿”包装状态在您承诺纱线时的安装方式.lock在其他方面NPM只看到semver满意度,可以为2个开发人员获取2个不同版本(假设时间包正在升级)
最后的说明
npm的人们在npm @ 5发布时已经做了很多工作,我认为现在所有的陈述都是为什么纱线被创造以及当时解决了哪些问题的原因,但我认为在当前日期,它并不大现在这两者之间的差异
标签:yarnpkg,javascript,node-js,npm 来源: https://codeday.me/bug/20191001/1837301.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。