mcpField
G
generated-projects

generated-projects

github.com/tuist開発5.9k13 回インストール今日更新
リポジトリ

generated-projects について

Tuistが生成するXcodeプロジェクトを扱う開発者向けの実践ガイドです。buildableFolders、タグによる対象の絞り込み、xcodebuildでのビルドとテストを説明します。

主な機能

  1. 01buildableFoldersによるファイル管理
  2. 02ターゲットタグで生成範囲を限定
  3. 03プロジェクトと依存関係の設定調整
  4. 04xcodebuildでのビルドとテスト
  5. 05依存関係やリンカー問題の調査

活用シーン

  1. 01Tuist workspaceの生成とビルド
  2. 02指定したテストスイートやケースの実行
  3. 03プロジェクト領域を絞ったターゲット生成
  4. 04依存関係やリンカー問題の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tuist/tuist --skill generated-projects

インストール後、Claude Code で/generated-projectsを入力して読み込まれたか確認します。

詳細

Tuist 生成プロジェクトの使用

クイックスタート

# Generate workspace without opening Xcode
tuist generate --no-open

# Build a scheme with xcodebuild
xcodebuild build -workspace App.xcworkspace -scheme App

# Run tests with xcodebuild
xcodebuild test -workspace App.xcworkspace -scheme AppTests -only-testing AppTests/MyTestCase

プロジェクト定義

ビルド可能なフォルダーを優先する

sources および resources の glob の代わりに buildableFolders を使用してください。ビルド可能なフォルダーはファイルシステムと同期されるため、ファイルを追加または削除しても再生成は不要です。

let target = Target(
  name: "App",
  buildableFolders: [
    "App/Sources",
    "App/Resources",
  ]
)
ターゲットにタグを付けて範囲を絞る

ターゲットタグを使ってプロジェクトの領域をグループ化します。たとえば、次のように指定します。

  • tag:team:*
  • tag:feature:*
  • tag:layer:*

これらのタグを使うと、後で生成やテストの対象範囲を絞り込みやすくなります。

タグを使ったターゲットメタデータの例:

let target = Target(
  name: "PaymentsUI",
  metadata: .metadata(tags: [
    "tag:team:commerce",
    "tag:feature:payments",
    "tag:layer:ui",
  ])
)

対象範囲を絞って作業する場合は、必要なものだけを生成してください。

tuist generate tag:feature:payments
tuist generate PaymentsUI PaymentsTests
ビルド構成を揃える

プロジェクトと外部依存関係のビルド構成を揃えてください。PackageSettings(settings: .settings(configurations: [])) を使ってプロジェクトの構成を反映します。構成が一致しない場合は警告が出ます。

ワークフロー

意図的に生成する
  • Xcode の起動を避けるため、自動化やスクリプトでは tuist generate --no-open を使用してください。
  • マニフェストが変更された場合(または依存関係のグラフが変更された場合)は、再生成してください。
  • プロダクトが見つからず生成に失敗する場合は、tuist install を実行して依存関係を解決し、再試行してください。
xcodebuild でビルドする

生成されたワークスペースとスキームを指定して、xcodebuild build を使用してください。

xcodebuild build \
  -workspace App.xcworkspace \
  -scheme App \
  -destination "generic/platform=iOS Simulator"
xcodebuild でテストする

ローカルでテストを実行するには、xcodebuild test を使用してください。tuist test は呼び出すたびにプロジェクトを再生成するため、反復作業が遅くなります。これを避けるため、tuist test よりも xcodebuild test を優先してください。

テストの実行時間を最適化するには、次の点に留意してください。

  • --only-testing を使用すると、ターゲット全体ではなく、作業中の特定のテストスイートまたはテストケースだけを実行できます。
  • 必要なテストターゲットを含む範囲で、コンパイル対象が最も少ないスキームを選択してください。これにより、テスト開始前のビルド時間を最小限に抑えられます。
# Run a specific test suite
xcodebuild test \
  -workspace App.xcworkspace \
  -scheme AppTests \
  -only-testing AppTests/MyTestSuite

# Run a single test case
xcodebuild test \
  -workspace App.xcworkspace \
  -scheme AppTests \
  -only-testing AppTests/MyTestSuite/testMyFunction

ガイドライン

  • buildableFolders のパスを、ターゲットの実際のファイルシステム上の構成に合わせてください。
  • 同じターゲットで、buildableFolders と sources または resources の glob が重複しないようにしてください。
  • tuist generate --no-open の実行後、必要に応じて Xcode を手動で開いてください。

トラブルシューティング

静的副作用に関する警告: プロダクトの種類を意図的に調整してください。ローカルターゲットには Target.product を、外部プロダクトには PackageSettings(productTypes:) を使用します。すべてを .framework で動的にするとコンパイルおよび実行はできますが、起動時間に悪影響を及ぼす可能性があります。副作用が発生しない場合は、可能な限り静的プロダクト(静的フレームワークまたはライブラリ)を優先してください。

Objective-C 依存関係によるクラッシュ: 必要に応じて、利用側のターゲットの OTHER_LDFLAGS に -ObjC または -force_load を追加してください。参考:https://tuist.dev/en/docs/guides/features/projects/dependencies#objectivec-dependencies

コメント