1月25日,Yarn官方團隊在GitHub issue中宣佈將對Yarn進行重大更改,主要包括:將代碼庫從Flow移植到TypeScript,不再支持Node 4和Node 6,併爲Yarn新增了一些功能等,這個更改項目代號爲Berry,目的是增強Yarn優勢,彌補弱勢。
Yarn是Facebook開源的一款號稱代替npm的js包管理工具,相對npm來說,Yarn具有安裝模塊的速度更快、支持離線模式、兼容npm與bower工作流以及支持兩種軟件倉庫混用等優勢。這次的改進主要是針對Yarn v2及其之後的版本,具體規劃如下。
主要變化
-
lockfile(和配置)格式將成爲YAML的嚴格子集;
-
添加對插件的支持;
-
Yarn將被重新設計成爲API,與CLI有相似的功能,當前,在使用Yarn時,開發者唯一的選擇是命令行界面,Yarn不提供實現複雜邏輯的原語(無論是解析器、鏈接器還是訪問配置),但是,這將會有改進,以後它將可以在腳本中使用組件-無需再解析package.json的內容,無需運行解決方案等,Yarn將能抽象這些所有繁雜的工作;
-
不再支持Node 4和Node 6;
-
日誌系統進行大修改,改用TypeScript後可以獲取診斷出來的錯誤代碼,每個錯誤、警告和通知都會賦予一個獨特的代碼,該代碼將會被記錄下來,並附有解釋;
-
當前的一些功能如autoclean將被移動到contrib插件中,它們仍受支持,但可能與標準bundle的發佈週期不同;
-
緩存文件格式將從Tar切換到Zip,這爲隨機訪問提供了更好的特性;
-
Yarn代碼庫將從Flow移植到TypeScript中,這也是jest用TS重寫之後,Facebook的又一個代碼庫遷移的項目。
雖說Yarn現在用的Flow很友好,但Yarn團隊希望第三方貢獻者能更輕鬆幫助他們維護Yarn,很多開發者認爲,這是因爲TS有很好的社區,背後有更可靠更強大的公司——微軟的支持,在調試上,它可以節省大量的時間,自然也就比JavaScript更受歡迎,而且,相對Flow來說,開發者對TS更爲熟悉,上手更爲容易。
新增功能
-
嵌套工作區(Nested workspaces)將支持開箱即用;
-
無論在哪個工作區,運行yarn run foo:bar將運行foo:bar腳本;
-
引入新的命令
yarn constraints
,該命令允許你跨工作區執行約束(constraints); -
無論底層操作系統是怎樣的,在腳本字段中編寫posix命令行都將起作用;
-
緩存將完全變成原子性,多個Yarn實例將能夠在同一緩存上併發運行,而不會有破壞數據的風險等。
Yarn的價值觀:開發優先
Yarn團隊認爲程序包管理器不應該是生產服務器上運行的工具,在那裏運行的代碼越多,出現問題的可能性就越高,最終會導致生產系統崩潰。而Yarn以開發優先,意味着Yarn是一個開發工具,它的應用最多就是到克隆代碼庫這一步了,其中包括即插即用,在設計時就考慮到了這一點。
過去幾年中,JavaScript項目增加的複雜性以適應人們發現的越來越多的用例,Yarn團隊認爲包管理應該處於一個獨特的地位,幫助減少一些負擔,使用戶能夠輕鬆管理他們的項目。同時,在項目或應用程序處於不安全模式時,一個合格的包管理器應該有提示或警告的責任。
由於單個項目永遠無法滿足開發人員的所有需求,生態圈中出現了大量的項目,但是Yarn並不打算與他們競爭,而是加強自身,賦予開發者更好的能力。
詳情請查看GitHub:https://github.com/yarnpkg/yarn/issues/6953
更多內容請關注前端之巔。