Rush Stack商店部落格活動
跳到主要內容
heft

Heft 是一套由組態驅動的工具鏈,可以呼叫其他熱門工具,例如 TypeScript、ESLint、Jest、Webpack 和 API Extractor。您可以使用它來建置網頁應用程式、Node.js 服務、命令列工具、程式庫等。Heft 使用相同的方式建置所有 JavaScript 專案:一種可行的方式。

Heft 通常透過「package.json」指令啟動,例如「npm run build」或「npm run test」。它可用於單一儲存庫中,其中可能有數百個專案,此時Rush調諧器會在每個專案資料夾中分別呼叫這些指令。在這種情況下,所有處理都必須盡可能快速地執行。專用腳本的維護會成為頭痛的來源,因此最好用由組態檔案驅動的可重複使用引擎取代它們。在大型儲存庫中,您會希望減少這些組態檔案在專案間重複出現的情形。最後,您會想要定義一組小小的典型專案類型 (「rigs」) 來正式支援,然後避免讓專案覆寫 rig 組態。保持一致性可以確保任何人均可輕鬆地對任何專案做出貢獻。Heft 已針對所有這些概念進行現成實作。

不過,您不需要單一儲存庫來使用 Heft。對於較小的獨立專案來說,它也能發揮作用。與其他類似系統相比,Heft 有一些獨特的設計目標

  • 可擴充性:Heft 與Rush 堆疊系列工具介接,這些工具專為具有大量人員和專案的大型單一儲存庫量身打造。不過,Heft 不需要 Rush。

  • 最佳化:Heft 在每一步都追蹤精細的效能指標。TypeScript 外掛程式實作了精密的最佳化技術,例如:檔案系統快取、增量編譯、同時多重目標發射,以及 Jest/Webpack/ESLint 的統一編譯路徑。JSON 設定檔和外掛程式明細讓您可以快速查詢元資料,而無須評估潛在非效率的指令碼程式碼。

  • 完整:Rush Stack 致力建立一個完整的解決方案,用來建立典型的 TypeScript 專案。不固執己見的任務抽象通常會與這個目標相衝突:最佳化和支援(以及文件處理)所有可能的技術選擇組合是很昂貴的。最佳的最佳化和整合會對於任務交互方式做出深入的假設。儘管 Heft 引擎本身非常有彈性,但我們的哲學是同意一個涵蓋廣泛情境的標準方法,然後投入資源實作這個方法中最好的體驗。

  • 可擴充性:多數專案至少需要一些特殊化的任務,例如預處理器、後處理器或載入器。Heft 是在使用 tapable 鉤子系統(Webhook 從 Webpack 移植)的外掛程式中組織而成的。強型的 API 讓您能夠輕易撰寫自己的外掛程式。與 Grunt 或 Gulp 等鬆散架構相比,Heft 的外掛程式系統使用明確且易於閱讀的設定檔組織。自訂功能通常會擴充標準裝置,而非從頭開始。

  • 熟悉:Heft 就像 Rush,是一個正規的 Node.js 應用程式,開發人員不需要安裝本機先決條件,例如 Python、MSYS2 或 .NET Framework。Heft 的原始程式碼容易理解和除錯,因為它 100% 使用 TypeScript,和您的網頁專案使用相同的程式語言。當然,仍然可以針對本機目標開發。

  • 專業:Rush Stack 專案是由航運大型商業應用程式的工程師開發,並為這些工程師開發的。每個功能都經過設計、公開討論,並經過通盤思考的程式碼檢閱。重大變更要求我們移轉數千個自己的專案,因此與典型的 Node.js 工具相比,升級相當輕鬆。