Facebook 已于上周正式发布 JavaScript 包管理器 Yarn 1.0。
Facebook 表示 GitHub 上有 175,000 个项目在使用 Yarn,许多大大小小的公司和广大开源社区也在使用 Yarn,每个月通过 Yarn 下载的包数量接近 30 亿个。此外,Yarn 现在也已预安装在诸如 CircleCI、Travis CI 和 AppVeyor 这些主流的持续集成平台上。
Yarn 具有极佳的伸缩性,可以支持成千上万个直接或间接的包依赖。Yarn 的设计初衷是保证稳定性、弹性和高性能。基于这些原则,Yarn 1.0 带来了更多的新特性,希望能够帮助 Yarn 社区更快地发展,构建更好的项目。
Yarn 1.0 中值得关注的新特性
Yarn 工作区 (Yarn Workspaces)
越来越多的科技公司开始采用单体仓库模式(mono-repository — 方便跨项目共享代码,同时避免依赖同步问题)来进行代码控制,这种模式也正逐渐被开源社区和一些小型公司所采纳。
因此,Yarn 增加了一个新特性 ——工作区。工作区可以自动从多个 package.json 中收集所有的依赖项,并一次性将它们安装完毕。项目根目录下会生成一个独立的 yarn.lock 来锁定这些文件。此外,如果多个工作区之间存在依赖,Yarn 会为它们创建链接,这样所有的项目就可以始终共享最新的代码。
自动合并 yarn.lock 文件 (Auto-merging of lockfiles)
多个开发者在开发同一个项目时,可能会需要更新包依赖,从而导致 yarn.lock 文件出现冲突。如果只有一两个冲突,可以通过手动来解决,但如果冲突数量众多,解决冲突可能会变成一件很麻烦的事情。
因此,Yarn 提供了自动合并 yarn.lock 文件的功能以解决冲突的问题。通过运行 yarn install
命令可以触发合并,如果合并成功,新的无冲突 yarn.lock 文件会被保存到磁盘上。
未来计划
Facebook 表示未来的 Yarn 将要实现下面这些目标:
- 使用 Yarn 发布包:发布新包通常需要创建正确的更新日志、执行正确的语义版本控制、同步相关项目的版本,还需要频繁地手动或通过脚本来完成其他很多步骤。如果 Yarn 能够为包发布者完成这些事情岂不是更好?
- 包的安全性:在添加新软件包或升级旧的包时,包的安全性也是一个很重要的需要考虑的因素。Yarn 将会与 npm 合作,将双因子认证带到 Yarn 上。
更多更新说明, 请查看发布主页 。