跳至內容

Manifest

Tuist 預設使用 Swift 檔案作為定義專案與工作區,以及設定產生流程的主要方式。這些檔案在整份文件中稱為manifest 檔案。

採用 Swift 的決定受到Swift Package Manager啟發,後者同樣使用 Swift 檔案來定義套件。得益於使用 Swift,我們能利用編譯器驗證內容正確性,並在不同 manifest 檔案之間重複使用程式碼;同時也能借助 Xcode 的語法突顯、自動完成與驗證,提供一流的編輯體驗。

快取

由於 manifest 檔案是必須編譯的 Swift 檔案,Tuist 會快取編譯結果以加速解析流程。因此,你會發現首次執行 Tuist 時,產生專案可能需要較長時間。後續執行則會更快。

Project.swift#

Project.swift manifest 用於宣告一個 Xcode 專案。專案會在 manifest 檔案所在目錄中產生,並以name屬性指定的名稱命名。

swift
// Project.swift
let project = Project(
name: "App",
targets: [
// ....
]
)
根層級變數

manifest 根層級唯一應存在的變數是let project = Project(...)。若需要在 manifest 的不同部分重複使用程式碼,可以使用 Swift 函式。

Workspace.swift#

預設情況下,Tuist 會產生包含正在產生的專案及其相依專案的Xcode Workspace。若因任何原因你想要自訂工作區以加入額外專案或納入檔案與群組,可以透過定義Workspace.swift manifest 來達成。

swift
// Workspace.swift
import ProjectDescription
let workspace = Workspace(
name: "App-Workspace",
projects: [
"./App", // Path to directory containing the Project.swift file
]
)
Note

Tuist 會解析相依圖並將相依專案納入工作區。你無需手動加入它們。這對建置系統正確解析相依性是必要的。

多專案或單一專案#

常見的問題是應該在工作區中使用單一專案還是多個專案。在沒有 Tuist 的世界裡,單一專案設定往往會導致頻繁的 Git 衝突,因此鼓勵使用工作區。然而,由於我們不建議將 Tuist 產生的 Xcode 專案納入 Git 儲存庫,Git 衝突不再是問題。因此,選擇在工作區中使用單一或多個專案取決於你。

在 Tuist 專案中,我們傾向使用單一專案,因為冷啟動產生時間更快(需要編譯的 manifest 檔案較少),並且我們將專案描述輔助工具作為封裝單元。不過,你也可能希望以 Xcode 專案作為封裝單元來代表應用程式的不同領域,這更貼近 Xcode 建議的專案結構。

Tuist.swift#

Tuist 提供合理的預設值以簡化專案設定。不過,你可以透過在專案根目錄定義Tuist.swift來自訂設定,Tuist 會藉此判斷專案的根目錄。

swift
import ProjectDescription
let tuist = Tuist(
project: .tuist(generationOptions: .options(enforceExplicitDependencies: true))
)