# 目錄{#directories}

Tuist 遵循 [XDG
基本目錄規格](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)，在系統上的多個目錄中組織檔案。這提供了一種簡潔、標準的方式來管理組態、快取和狀態檔案。

## 支援的環境變數{#supported-environment-variables}

Tuist 支援標準 XDG 變數和 Tuist 特有的前綴變數。Tuist 特有的變數 (前綴為`TUIST_`)具有優先權，讓您可以將 Tuist
與其他應用程式分開設定。

### 設定目錄{#configuration-directory}

**環境變數：**
- `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
```

### 快取記憶體目錄{#cache-directory}

**環境變數：**
- `TUIST_XDG_CACHE_HOME` (優先)
- `XDG_CACHE_HOME`

**預設：** `~/.cache/tuist`

**用於：**
- **外掛程式** ：下載並編譯的外掛程式快取
- **ProjectDescriptionHelpers** ：已編譯的專案描述輔助工具
- **Manifests** ：快取清單檔案
- **專案** ：產生自動化專案快取
- **EditProjects** ：編輯指令的快取記憶體
- **運行**: 測試和建立運行分析資料
- **二進位檔案** ：建立工件二進位檔案 (不可跨環境共享)
- **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
```

### 國家目錄{#state-directory}

**環境變數：**
- `TUIST_XDG_STATE_HOME` (優先)
- `XDG_STATE_HOME`

**預設：** `~/.local/state/tuist`

**用於：**
- **日誌** ：日誌檔案 (`logs/{uuid}.log`)
- **鎖** ：驗證鎖檔案 (`{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
```

## 優先順序{#precedence-order}

在決定使用哪個目錄時，Tuist 會依下列順序檢查環境變數：

1. **Tuist 特有的變數** (例如：`TUIST_XDG_CONFIG_HOME`)
2. **標準 XDG 變數** (例如`XDG_CONFIG_HOME`)
3. **預設位置** (例如`~/.config/tuist`)

這可讓您
- 使用標準的 XDG 變數，以一致的方式組織您所有的應用程式
- 當您需要 Tuist 的不同位置時，使用 Tuist 專用變數覆寫
- 依靠合理的預設值，無需任何設定

## 常見用例{#common-use-cases}

### 每個專案隔離 Tuist{#isolating-tuist-per-project}

您可能想要隔離 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-cd-environments}

在 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
```

### 使用獨立目錄進行除錯{#debugging-with-isolated-directories}

在調試問題時，您可能會想要一筆勾消：

```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
```
