Roma - Facebook工具鏈大一統

什麼是roma

roma,中文名羅馬,是Facebook的rn團隊的產出,是一個試驗性質的javascript工具鏈,集編譯,linter,格式化,打包,測試等等於一體。目標是成爲一個處理javascript源代碼的全面性工具。javascript

roma不是一個收集已有工具的整合體,全部的內部組件都是有業務逐漸提煉出來的,而且沒有使用三方庫。java

roma雖然是試驗性工具,可是目前正在積極地發展。目前對全部感興趣的將來貢獻者們敞開大門。由於roma尚未作好在生產環境使用的準備,因此使用roma的惟一方式是從源代碼構建。git

roma是有志向的工具鏈,它或許將替代不少已存在的javascript工具。固然,咱們未來也會提供能夠在其餘工具中使用的組件。好比將roma做爲插件集成在其餘打包器中。github

roma遵循MIT協議,而且基於Contributor Covenant Code of Conduct管理。typescript

roma的誕生

Sebastian McKenzie啓動的roma項目,他同時也是babel和yarn的做者。shell

roma是Facebook的rn團隊協力完成的項目。json

roma的名字靈感來自於條條大路通羅馬羅馬非一日可就在羅馬的時候就要融入到羅馬的生活中。這些指代咱們對roma的指望,但願整個項目中有廣闊的適應範圍和咱們對約定(一致性)的渴望。然而。roma這個雄心勃勃的項目起初來自於辦公室的一句玩笑話。 : )babel

roma有一個斯巴達頭盔樣式的logo,雖然可能與roma沒有強相關性,可是它比Galea要帥得多。工具

代碼庫

roma幾乎徹底使用typescript編寫,幾乎沒有鬆散類型。測試

roma採用monorepo規範結構。

roma徹底自託管,每次更新會使用以前的版本編譯新的代碼。

roma支持JSX和Flow、Typescript特有的註釋代碼。

查看更多細節

當前集中點

當前咱們主要致力於linting部分,參考issue

快速上手

若是想要在項目中集成roma,你所要作的只有一個配置文件:roma.json

$ mkdir hello-world
$ cd hello-world
$ echo '{}' >rome.json

該文件用來配置roma,而且也是劃分是否受roma託管的重要標誌。

更新細節請查看官網

roma的哲學

下面的列表列出了roma信守的精神。這些內容是不全面的,其中一些是淺顯易懂可是爲了完成性依然將其列出。

工程管理

  • 設定明確的目標:提早制定工程的意圖和指望,咱們的工程不該該給咱們驚喜!
  • 公開性:有關roma的討論和決定都將在一些公共場景,如github、roma dicord和推特。惟一例外的是對於代碼的審覈咱們將嚴格保密。

技術

  • 無外部依賴:咱們能夠經過更機密的集成咱們的內部工具和互通抽象概念,使咱們更告訴的推進項目的進度和更加一致性的體驗。利用定製型咱們有更多的機會去得到更好的體驗。
  • 對錯誤提供修復提示:經過對常見使用方法的推斷和過濾,咱們要減小無關的、沒有幫助的提示信息。
  • 更精確到錯誤信息:咱們沒有通用的錯誤信息,由於這不能幫助使用者明白爲何會出錯,也不能幫助開發者更好的經過錯誤信息定位問題所在。
  • 簡化API:對於可選配置和命令行參數,咱們以爲不是必須的。他們並不能很好的組合使用。咱們爲何不能簡化這部分?
  • 避免專用術語:這些專用術語除了裝X幾乎沒有其餘做用,咱們致力於讓新手和專家都能一目瞭然,例如,在編譯出錯的時候,使用'character'代替'token'!
  • 對於命令和命令行參數避免縮寫:沒有必要時用使人迷惑且不得不查閱文檔的縮寫!
  • 容錯率高的術語:使用那些更容易明白的術語
  • 兼容大部分終端:不要假設僅僅在terminal中使用,要兼容更多的通用環境。
  • 使用強類型:不要使用鬆散類型,儘量的驗證輸入。
  • 終端上的輸出更明確:設計終端輸出的時候,不要僅僅依靠色彩來提升可讀性,應合理運用格式、符號、間距來提升可讀性。

社區

貢獻和開發介紹在這裏

能夠來這裏這裏一塊兒討論,可是要遵照咱們的準則哦!

相關文章
相關標籤/搜索