mcpField
U
using-tuist-generated-projects

using-tuist-generated-projects

github.com/tuist開発35598 回インストール31 週間前に更新
リポジトリ

using-tuist-generated-projects について

Tuist で生成したプロジェクトの開発ワークフローを案内するスキルです。プロジェクト定義、ターゲットの分類、ワークスペース生成、xcodebuild によるビルドとテストを扱います。

主な機能

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

活用シーン

  1. 01自動化スクリプトでワークスペースを生成
  2. 02選択した機能のターゲットを生成
  3. 03特定のテストスイートやケースを実行
  4. 04製品不足や Objective-C のリンク問題を調査

インストール

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

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

インストール後、Claude Code で/using-tuist-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

コメント