跳至內容

目錄結構

雖然 Tuist 專案常用於取代 Xcode 專案,但並不限於此用途。Tuist 專案亦可用於產生其他類型的專案,例如 SPM 套件、範本、外掛程式及工作。本文說明 Tuist 專案的結構與組織方式。後續章節將介紹如何定義範本、外掛程式及工作。

標準 Tuist 專案#

Tuist 專案是Tuist 最常見產生的專案類型。 它們用於建構應用程式、框架及函式庫等。與 Xcode 專案不同,Tuist 專案以 Swift 定義,因此更具彈性且更易於維護。Tuist 專案也更具宣告性,讓開發者更容易理解與推論。以下結構展示一個會產生 Xcode 專案的典型 Tuist 專案:

bash
Tuist.swift
Tuist/
Package.swift
ProjectDescriptionHelpers/
Projects/
App/
Project.swift
Feature/
Project.swift
Workspace.swift
  • Tuist 目錄: 此目錄有兩個用途。首先,它標示專案根目錄的位置。這讓我們可以建構相對於專案根目錄的路徑,並在專案內的任何目錄執行 Tuist 指令。其次,它是以下檔案的容器:

    • ProjectDescriptionHelpers: 此目錄包含在所有 manifest 檔案之間共用的 Swift 程式碼。Manifest 檔案可以import ProjectDescriptionHelpers以使用在此目錄中定義的程式碼。共用程式碼有助於避免重複,並確保各專案之間的一致性。
    • Package.swift: 此檔案包含 Swift Package 相依性,供 Tuist 透過可設定與最佳化的 Xcode 專案和 target(例如CocoaPods)進行整合。了解更多這裡。
  • 根目錄:你專案的根目錄,同時包含Tuist目錄。

    • Tuist.swift:此檔案包含適用於所有專案、工作區及環境的 Tuist 設定。例如,可用於停用 scheme 的自動產生,或定義專案的部署目標。
    • Workspace.swift:此 manifest 代表一個 Xcode 工作區。它用於群組其他專案,亦可加入額外的檔案與 scheme。
    • Project.swift:此 manifest 代表一個 Xcode 專案。它用於定義專案包含的 target 及其相依性。

與上述專案互動時,指令預期在工作目錄或透過--path旗標指定的目錄中找到Workspace.swift或Project.swift檔案。manifest 應位於包含Tuist目錄的目錄或其子目錄中,該目錄代表專案的根目錄。

Tip

Xcode 工作區允許將專案拆分為多個 Xcode 專案,以降低合併衝突的可能性。若你過去使用工作區是為了此目的,在 Tuist 中則不需要。Tuist 會自動產生一個包含專案及其相依專案的工作區。

Swift Package #

Tuist 亦支援 SPM 套件專案。若你正在處理 SPM 套件,通常無需更新任何內容。Tuist 會自動偵測你的根目錄Package.swift,且所有 Tuist 功能都會如同它是Project.swiftmanifest 一般運作。

要開始使用,請在你的 SPM 套件中執行tuist install與tuist generate。你的專案現在應具備與原生 Xcode SPM 整合相同的 scheme 與檔案。此外,你現在還可以執行tuist cache,讓大多數 SPM 相依性與模組預先編譯,使後續建構極為快速。