Back to Tuist

最佳實踐{#best-practices}

server/priv/docs/zh_Hant/guides/features/projects/best-practices.md

4.191.83.2 KB
Original Source

最佳實踐{#best-practices}

多年來與不同的團隊和專案合作,我們發現了一套最佳實務,建議您在使用 Tuist 和 Xcode 專案時遵循。這些實務並不是強制性的,但它們可以幫助您以更容易維護和擴充的方式來架構專案。

Xcode{#xcode}

沮喪模式{#discouraged-patterns}

模擬遠端環境的配置{#configurations-to-model-remote-environments}

許多組織使用建立組態來模擬不同的遠端環境 (例如Debug-ProductionRelease-Canary),但這種方法有一些缺點:

  • 不一致: 如果整個圖形中的組態不一致,建立系統可能會為某些目標使用錯誤的組態。
  • 複雜性: 專案最終可能會產生一長串的本機設定和遠端環境,難以推理和維護。

建置配置的設計是為了體現不同的建置設定,專案很少只需要DebugRelease 。建模不同環境的需求可以用不同的方式來實現:

  • 在偵錯建置中: 您可以在應用程式中包含開發中應可存取的所有配置 (例如端點),並在執行時進行切換。切換可以使用方案啟動環境變數,或是應用程式內的使用者介面。
  • 在釋出建置中: 在釋出的情況下,您只能包含釋出建置綁定的組態,而不能包含使用編譯器指令切換組態的執行時邏輯。

[!NOTE] Non-standard Configurations

雖然 Tuist 支援非標準的組態,並使它們比起 vanilla Xcode 專案更容易管理,但如果整個相依圖中的組態不一致,您將會收到警告。這有助於確保建立的可靠性,並防止與組態相關的問題。

專案生成

可建立的資料夾

Tuist 4.62.0 新增了對buildable folders (Xcode 的同步群組) 的支援,這是 Xcode 16 中為了減少合併衝突而引入的功能。

雖然 Tuist 的通配符模式 (例如Sources/**/*.swift) 已經消除了產生專案中的合併衝突,但可建立資料夾提供了額外的好處:

  • 自動同步 :您的專案結構與檔案系統保持同步 - 新增或移除檔案時無需重新生成
  • AI 友好的工作流程 :編碼助手和代理可以修改您的程式碼庫,而不會觸發專案再生
  • 更簡單的配置 :定義資料夾路徑而非管理明確的檔案清單

我們建議採用可建立資料夾,取代傳統的Target.sourcesTarget.resources 屬性,以獲得更精簡的開發體驗。

::: code-group

swift
let target = Target(
  name: "App",
  buildableFolders: ["App/Sources", "App/Resources"]
)
swift
let target = Target(
  name: "App",
  sources: ["App/Sources/**"],
  resources: ["App/Resources/**"]
)
<!-- -->

:::

依賴

在 CI 上強制已解決的版本

在 CI 上安裝 Swift 套件管理員相依性時,我們建議使用--force-resolved-versions 旗標,以確保確定性的建置:

bash
tuist install --force-resolved-versions

此旗標可確保使用Package.resolved 中的精確版本解決相依性,消除相依性解決的非決定性所導致的問題。這在 CI 上尤其重要,因為可重複的建置是非常重要的。