Yarn 1.0 有哪些更新?

9月7日,Yarn 发布了 1.0 版本。自去年10月 facebook 公开 Yarn ,短短11个月时间,Github 上已经有超过175000个项目在使用 Yarn,每月通过 Yarn 下载 JavaScript 包近30亿次。包括微软、Twiiter 等在内的大大小小许多公司,以及各开源社区都被 Yarn 的快速、安全、可靠所吸引。许多持续集成服务,比如 CircleCI、TravisCI 以及 AppVeyor 等都预置了 Yarn。那这一次 1.0版本的发布,Yarn 又有哪些新功能呢?

Yarn Workspaces

许多大公司采用 monorepo 方法来管理代码,一些小公司和开源社区也渐渐开始使用 monorepo。这种方法解决了依赖同步问题。为了让人们更方便的采用这种模式, Yarn 增加了 Workspaces 功能。这个功能可以自动的将项目依赖的多个package.json合并为一个,然后一次性完成安装。在根文件中也会只有一个yarn.lock文件来跟踪这些依赖。另外, Yarn 会在所有互相依赖的 Workspace 间创建软链接。这样,最后的代码可以用于所有项目。
Facebook 和 开源社区的 Babel 项目已经在使用 Workspace 了。如果你正在用 monorepo 管理工具 - Lerna,你可以选择用 Yarn 的 Workspaces。这个 PR 是一个起步的好例子。Yarn 希望在增加了 Workspace 之后,能够让一个大项目的各部分不再有重复的包,使得安装更快速、轻便。

Auto-merging of lockfiles

一个多人合作且迭代迅速的项目,可能需要一个接一个的 PR 去更新依赖。这很容易导致 yarn.lock 在 merge 的时候发生冲突。有一个两个包发生冲突,解决起来还很容易,但是多了的话工作就变得繁琐而乏味了。
Yarn 的 auto-merge 功能会在出现 lockfile 冲突的时候通过 yarn install自动解决这些冲突。

Selective version resolutions

有时候,package 会有一些紧急 BUG 修复或漏洞更新需要尽快采用。但是你的项目却没有直接使用这些依赖,而是通过许多别的依赖间接使用该 package。这种情况下,你只能等直接使用的依赖更新或者 fork 它然后再更新依赖。两种方法都不够好。Yarn 的 selective version resolution 功能针对这种情况提供了更好的解决办法。
在项目的 package.json 文件中定义一个resolutions区域,可以在其中指定要使用的次级依赖的版本。这样可以灵活的控制间接依赖。下面的例子展示了指定 async模块版本的情况:

修复及其它改进
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值