Facebook发布JavaScript包管理器Yarn 1.0

摘要:Facebook 在官方网站上正式发布了 JavaScript 包管理器 Yarn 1.0。在从 Yarn 诞生之日起至今的 11 个月时间里,Yarn 拥有了大批的追随者。GitHub 上有 175,000 个项目在使用 Yarn,许多大大小小的公司和广大开源社区也在使用 Yarn,每个月通过 Yarn 下载的包数量接近 30 亿个。Yarn 为广大用户节省了大量的时间。

Facebook发布JavaScript包管理器Yarn 1.0

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

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 自动合并

Facebook发布JavaScript包管理器Yarn 1.0

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

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

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

Facebook发布JavaScript包管理器Yarn 1.0

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

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

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

社区的参与情况

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

未来的计划

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

来自: InfoQ

扩展阅读

GitHub上整理的一些工具
2016年JavaScript领域中最受欢迎的“明星”们
Facebook开源2016年的回顾
盘点大数据开源软件Google Trends指数
FEX 技术周刊 - 2015/08/10

为您推荐

利用HTML5与jQuery技术创建一个简单的自动表单完成
腾讯宣布推出第三代高性能机器学习计算平台Angel 并于2017年全面开源
为 Java 程序员准备的 Go 入门 PPT
Docker, Mesos, Marathon以及宠物模式的终结
FEX 技术周刊 - 2015/08/10

更多

Facebook
JavaScript
软件编程