Yarn將用TypeScript重寫,Flow慘遭親爹拋棄!

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

更多內容請關注前端之巔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章