当前位置:统一通信/协作企业动态 → 正文

Facebook发布JavaScript包管理器Yarn 1.0

责任编辑:editor005 作者: 薛命灯 |来源:企业网D1Net  2017-09-11 20:21:54 本文摘自:INFOQ

Facebook在官方网站上正式发布了JavaScript包管理器Yarn 1.0。在从Yarn诞生之日起至今的11个月时间里,Yarn拥有了大批的追随者。GitHub上有175,000个项目在使用Yarn,许多大大小小的公司和广大开源社区也在使用Yarn,每个月通过Yarn下载的包数量接近30亿个。Yarn为广大用户节省了大量的时间。Twitter和微软说他们的包安装速度因此提升了5倍,Expo、Kenzan和Sentry表示性能和稳定性的提升加快了他们的代码交付速度。Yarn现在已经成为主流持续集成平台的预安装项,如CircleCI、Travis CI和AppVeyor。

Yarn在Facebook内部也得到了广泛的采用,包括Facebook主应用、Instagram、Oculus和WhatsApp。Yarn具有极佳的伸缩性,可以支持成千上万个直接或间接的包依赖。Yarn的设计初衷就是要保证、稳定性、弹性和高性能。基于这些原则,Yarn 1.0带来了更多的新特性,希望能够帮助Yarn社区更快地发展,构建更好的项目。

Yarn 1.0新特性

1. Yarn工作区(workspace)

单体仓库(mono repository)模式(方便跨项目共享代码,同时避免依赖同步问题)如今已经被大型的科技公司所采用,也正逐渐蔓延到开源社区和一些小型公司。为了让人们更方便地采用该模式,Yarn增加了一个新特性——工作区。工作区可以自动从多个package.json中收集所有的依赖,然后一次性把它们安装完毕。项目根目录下会生成yarn.lock来锁住这些文件。如果多个工作区之间存在依赖,Yarn会为它们创建链接,这样所有的项目就可以共享最新的代码。

2. yarn.lock自动合并

多个开发者在开发同一个项目时,有可能会更新包依赖,导致yarn.lock文件出现冲突。如果只有一两个冲突,那么完全可以通过手动来解决,但如果冲突数量众多,解决冲突就会变成一件很麻烦的事情。Yarn为此提供了自动合并yarn.lock文件的功能。通过运行yarn install命令可以触发合并动作,如果合并成功,新的yarn.lock就会被保存到磁盘上。

3. 可选择依赖版本(selective version resolution)

有时候,你的项目间接依赖了其他项目的包,而这些依赖包有了新版本,你急需使用依赖包的新功能。这个时候你要么等待其他项目更新这些依赖包,要么给其他项目拉一个分支,然后更新依赖包。但这些都不是最理想的方式。Yarn提供了可选择依赖版本的新特性,通过在package.json文件里定义resolutions字段来告诉Yarn该使用哪个版本的依赖包。下图就是一个通过该特性限定使用某个async模块版本的例子。

需要指出的是,该特性完全由社区设计和实现,Victor No l提交了RFC和验收测试,并由Kaylie Kwon负责实现。

问题修复和其他方面的改进

更好的交互式升级体验更快的文件完整性检查提供了一个独立的yarn.lock文件解析模块Yarn版本的一致性保证

社区的参与情况

项目在启动后就引入了RFC流程,鼓励社区参与项目的讨论。有很多特性都来自社区的贡献,仅在2017年,就有超过40位贡献者为Yarn贡献了他们的力量。

未来的计划

发布一个新包通常需要创建变更日志、执行版本语义、同步相关项目的版本,还需要手动或通过脚本完成其他很多步骤。如果Yarn能够为包发布者完成这些事情那岂不妙哉?另外,在添加或升级新包时,包的安全性也是一个很重要的考虑点。Yarn将会在包安全方面扮演一个重要的角色,Yarn将会与npm合作,将双因子认证带到Yarn上。

关键字:

本文摘自:INFOQ

x Facebook发布JavaScript包管理器Yarn 1.0 扫一扫
分享本文到朋友圈
当前位置:统一通信/协作企业动态 → 正文

Facebook发布JavaScript包管理器Yarn 1.0

责任编辑:editor005 作者: 薛命灯 |来源:企业网D1Net  2017-09-11 20:21:54 本文摘自:INFOQ

Facebook在官方网站上正式发布了JavaScript包管理器Yarn 1.0。在从Yarn诞生之日起至今的11个月时间里,Yarn拥有了大批的追随者。GitHub上有175,000个项目在使用Yarn,许多大大小小的公司和广大开源社区也在使用Yarn,每个月通过Yarn下载的包数量接近30亿个。Yarn为广大用户节省了大量的时间。Twitter和微软说他们的包安装速度因此提升了5倍,Expo、Kenzan和Sentry表示性能和稳定性的提升加快了他们的代码交付速度。Yarn现在已经成为主流持续集成平台的预安装项,如CircleCI、Travis CI和AppVeyor。

Yarn在Facebook内部也得到了广泛的采用,包括Facebook主应用、Instagram、Oculus和WhatsApp。Yarn具有极佳的伸缩性,可以支持成千上万个直接或间接的包依赖。Yarn的设计初衷就是要保证、稳定性、弹性和高性能。基于这些原则,Yarn 1.0带来了更多的新特性,希望能够帮助Yarn社区更快地发展,构建更好的项目。

Yarn 1.0新特性

1. Yarn工作区(workspace)

单体仓库(mono repository)模式(方便跨项目共享代码,同时避免依赖同步问题)如今已经被大型的科技公司所采用,也正逐渐蔓延到开源社区和一些小型公司。为了让人们更方便地采用该模式,Yarn增加了一个新特性——工作区。工作区可以自动从多个package.json中收集所有的依赖,然后一次性把它们安装完毕。项目根目录下会生成yarn.lock来锁住这些文件。如果多个工作区之间存在依赖,Yarn会为它们创建链接,这样所有的项目就可以共享最新的代码。

2. yarn.lock自动合并

多个开发者在开发同一个项目时,有可能会更新包依赖,导致yarn.lock文件出现冲突。如果只有一两个冲突,那么完全可以通过手动来解决,但如果冲突数量众多,解决冲突就会变成一件很麻烦的事情。Yarn为此提供了自动合并yarn.lock文件的功能。通过运行yarn install命令可以触发合并动作,如果合并成功,新的yarn.lock就会被保存到磁盘上。

3. 可选择依赖版本(selective version resolution)

有时候,你的项目间接依赖了其他项目的包,而这些依赖包有了新版本,你急需使用依赖包的新功能。这个时候你要么等待其他项目更新这些依赖包,要么给其他项目拉一个分支,然后更新依赖包。但这些都不是最理想的方式。Yarn提供了可选择依赖版本的新特性,通过在package.json文件里定义resolutions字段来告诉Yarn该使用哪个版本的依赖包。下图就是一个通过该特性限定使用某个async模块版本的例子。

需要指出的是,该特性完全由社区设计和实现,Victor No l提交了RFC和验收测试,并由Kaylie Kwon负责实现。

问题修复和其他方面的改进

更好的交互式升级体验更快的文件完整性检查提供了一个独立的yarn.lock文件解析模块Yarn版本的一致性保证

社区的参与情况

项目在启动后就引入了RFC流程,鼓励社区参与项目的讨论。有很多特性都来自社区的贡献,仅在2017年,就有超过40位贡献者为Yarn贡献了他们的力量。

未来的计划

发布一个新包通常需要创建变更日志、执行版本语义、同步相关项目的版本,还需要手动或通过脚本完成其他很多步骤。如果Yarn能够为包发布者完成这些事情那岂不妙哉?另外,在添加或升级新包时,包的安全性也是一个很重要的考虑点。Yarn将会在包安全方面扮演一个重要的角色,Yarn将会与npm合作,将双因子认证带到Yarn上。

关键字:

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^