yarn 2.0 (berry)尝鲜

前言

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工程相连接的包管理工具。

yarn中通过workspace实现了这样的功能,很多人习惯称之为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是一个完全不一样的东西,因此确实还存在一定的迁移成本,这一点是无可避免的。

发布了362 篇原创文章 · 获赞 352 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43870742/article/details/104098725