跳至內容

目錄

Tuist 會按照 XDG Base Directory Specification,將檔案整理到系統中的多個目錄。這提供了一種清晰、標準的方式來管理設定、快取和狀態檔案。

支援的環境變數#

Tuist 同時支援標準 XDG 變數和帶有 Tuist 專屬前綴的變體。Tuist 專屬變體(以 TUIST_ 為前綴)具有較高優先級,讓你可以獨立於其他應用程式來設定 Tuist。

設定目錄#

環境變數:

  • TUIST_XDG_CONFIG_HOME(具有較高優先級)
  • XDG_CONFIG_HOME

預設值:~/.config/tuist

用途:

  • 伺服器憑證(credentials/{host}.json)

範例:

bash
# Set Tuist-specific config directory
export TUIST_XDG_CONFIG_HOME=/custom/config
tuist auth login
# Or use standard XDG variable
export XDG_CONFIG_HOME=/custom/config
tuist auth login

快取目錄#

環境變數:

  • TUIST_XDG_CACHE_HOME(具有較高優先級)
  • XDG_CACHE_HOME

預設值:~/.cache/tuist

用途:

  • Plugins:已下載並編譯的外掛程式快取
  • ProjectDescriptionHelpers:已編譯的專案描述輔助工具
  • Manifests:已快取的 manifest 檔案
  • Projects:已產生的自動化專案快取
  • EditProjects:edit 指令的快取
  • Runs:測試和建構執行的分析資料
  • Binaries:建構產物二進位檔(無法在不同環境之間共用)
  • SelectiveTests:選擇性測試快取

範例:

bash
# Set Tuist-specific cache directory
export TUIST_XDG_CACHE_HOME=/tmp/tuist-cache
tuist cache
# Or use standard XDG variable
export XDG_CACHE_HOME=/tmp/cache
tuist cache

狀態目錄#

環境變數:

  • TUIST_XDG_STATE_HOME(具有較高優先級)
  • XDG_STATE_HOME

預設值:~/.local/state/tuist

用途:

  • Sessions:工作階段記錄和網路錄製(sessions/{uuid}/)
  • Locks:驗證鎖定檔案({handle}.sock)

範例:

bash
# Set Tuist-specific state directory
export TUIST_XDG_STATE_HOME=/var/log/tuist
tuist generate
# Or use standard XDG variable
export XDG_STATE_HOME=/var/log
tuist generate

優先順序#

在決定使用哪個目錄時,Tuist 會按以下順序檢查環境變數:

  1. Tuist 專屬變數(例如 TUIST_XDG_CONFIG_HOME)
  2. 標準 XDG 變數(例如 XDG_CONFIG_HOME)
  3. 預設位置(例如 ~/.config/tuist)

這讓你可以:

  • 使用標準 XDG 變數來一致地組織所有應用程式
  • 當你需要為 Tuist 使用不同位置時,以 Tuist 專屬變數覆寫
  • 無需任何設定即可依賴合理的預設值

常見使用案例#

按專案隔離 Tuist#

你可能希望按專案隔離 Tuist 的快取和狀態:

bash
# In your project's .envrc (using direnv)
export TUIST_XDG_CACHE_HOME="$PWD/.tuist/cache"
export TUIST_XDG_STATE_HOME="$PWD/.tuist/state"
export TUIST_XDG_CONFIG_HOME="$PWD/.tuist/config"

CI/CD 環境#

在 CI 環境中,你可能希望使用臨時目錄:

yaml
# GitHub Actions example
env:
TUIST_XDG_CACHE_HOME: /tmp/tuist-cache
TUIST_XDG_STATE_HOME: /tmp/tuist-state
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- run: tuist generate
- name: Upload logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: tuist-logs
path: /tmp/tuist-state/logs/*.log

使用隔離目錄進行除錯#

在除錯問題時,你可能希望從乾淨的狀態開始:

bash
# Create temporary directories for debugging
export TUIST_XDG_CACHE_HOME=$(mktemp -d)
export TUIST_XDG_STATE_HOME=$(mktemp -d)
export TUIST_XDG_CONFIG_HOME=$(mktemp -d)
# Run Tuist commands
tuist generate
# Clean up when done
rm -rf $TUIST_XDG_CACHE_HOME $TUIST_XDG_STATE_HOME $TUIST_XDG_CONFIG_HOME