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是一個完全不一樣的東西,因此確實還存在一定的遷移成本,這一點是無可避免的。

發佈了386 篇原創文章 · 獲贊 411 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章