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 又有哪些新功能呢?git

Yarn Workspaces

許多大公司採用 monorepo 方法來管理代碼,一些小公司和開源社區也漸漸開始使用 monorepo。這種方法解決了依賴同步問題。爲了讓人們更方便的採用這種模式, Yarn 增長了 Workspaces 功能。這個功能能夠自動的將項目依賴的多個package.json合併爲一個,而後一次性完成安裝。在根文件中也會只有一個yarn.lock文件來跟蹤這些依賴。另外, Yarn 會在全部互相依賴的 Workspace 間建立軟連接。這樣,最後的代碼能夠用於全部項目。
Facebook 和 開源社區的 Babel 項目已經在使用 Workspace 了。若是你正在用 monorepo 管理工具 - Lerna,你能夠選擇用 Yarn 的 Workspaces。這個 PR 是一個起步的好例子。Yarn 但願在增長了 Workspace 以後,可以讓一個大項目的各部分再也不有重複的包,使得安裝更快速、輕便。github

Auto-merging of lockfiles

一個多人合做且迭代迅速的項目,可能須要一個接一個的 PR 去更新依賴。這很容易致使 yarn.lock 在 merge 的時候發生衝突。有一個兩個包發生衝突,解決起來還很容易,可是多了的話工做就變得繁瑣而乏味了。
Yarn 的 auto-merge 功能會在出現 lockfile 衝突的時候經過 yarn install自動解決這些衝突。json

Selective version resolutions

有時候,package 會有一些緊急 BUG 修復或漏洞更新須要儘快採用。可是你的項目卻沒有直接使用這些依賴,而是經過許多別的依賴間接使用該 package。這種狀況下,你只能等直接使用的依賴更新或者 fork 它而後再更新依賴。兩種方法都不夠好。Yarn 的 selective version resolution 功能針對這種狀況提供了更好的解決辦法。
在項目的 package.json 文件中定義一個resolutions區域,能夠在其中指定要使用的次級依賴的版本。這樣能夠靈活的控制間接依賴。下面的例子展現了指定 async模塊版本的狀況:安全

修復及其它改進

相關文章
相關標籤/搜索