当前位置: 首页 > 工具软件 > Berry > 使用案例 >

yarn 2.0 (berry)尝鲜

蒋招
2023-12-01

前言

yarn2发布在即,相对于yarn1(1.21.1),这可以说是一个完全不同的软件,但是它从根本上改变了npm包管理方式,当生态成熟之时,可以说是前端开发的一大利器。

升级

npm install -g yarn@berry

目前还只能通过npm安装。注意安装之后新的cli可能会让你很不舒服,你无法通过global查看全局安装的yarn包,你甚至需要执行:

yarn run 

来实现:

npm run

的效果。

而在我们看不见的地方,yarn也已经脱胎换骨,需要注意的是由于历史原因,原来的yarn库并不会发生移动,新版的yarn的标签就会是berry。

特点有很多,这里我们主要谈四点。

typescript

先从我们感觉不到的地方开始讲,yarn转用typescript作为开发语言,但这点我们都见怪不怪了,毕竟有Vue的事耳熟能详,这一点也不会很奇怪。

同时由于新版yarn加入了插件系统,使用ts开发也会让你的插件开发更加安全。

yaml

yarn2中,锁定文件和配置文件的格式都更改为纯YAML格式。

workspace

我们知道npm包往往是以工程为单位,相互之间独立存在的,多年来,我们似乎已经习惯了这种方式的存在,当然也有类似lerna 这样讲有着共同关联的npm工程相连接的包管理工具。

yarn1中已经通过workspace实现了这样的功能,但是使用起来还不是很舒适。yarn2对此做了一定的修改,主要有cli优化,如增加了统一升级所有工作区依赖的指令以及保证每个工作区依赖版本相同的指令。同时还建立了一个工作流用于处理打包的优化。最后通过constrain指令限制依赖版本功能,具体大家可以去dev.to上找维护者的文章。

关于monorepo,我第一次接触这个词是在nest.js学习中,需要做链接管理页面和前台的接口,本身业务代码重合就很多,使用monorepo管理项目就显得条理。

当然yarn新增的这部分并不是为了取代lena等,它可以帮助你使用lerna,同时也提供了高度的自由度。

node_modules

对于我们最直接的影响就是node_modules的改变,之前我们yarn install,生成的这些node_modules目录通常包含大量文件,生成它们可以占运行所需时间的70%以上。

而新版的yarn2,使用了pnp.js,生成单个.pnp.js文件和.yarn文件夹,而不是通常的文件node_modules。该.pnp.js文件不包含已安装软件包的源代码,而是包含将软件包名称和版本链接到磁盘上某个位置的映射,以及包含将软件包名称和版本与其依赖项集链接的另一个映射。得益于这种高效的系统,Yarn可以告诉Node确切的位置。这大大加快了运行速度,统计压缩了整个项目体积。

官网这样形容:

a node_modules folder of 135k uncompressed files (for a total of 1.2GB) gives a Yarn cache of 2k binary archives (for a total of 139MB)

缺点

虽然稳定版已经可以上线,但是yarn似乎需要时间开完善一系列工程之类的东西,目前他们给出的时间是2020/2/1之前完成一切工作,所以目前下载的版本还是"2.0.0-rc26",不过相信不会等太久。

RN并没有得到很好的支持,这一点他们还在解决中。

flow同样存在这个问题。

由于yarn2是一个完全不一样的东西,因此确实还存在一定的迁移成本,这一点是无可避免的。

 类似资料: