Skip to content

翻訳 🌍

このページの翻訳を行ったり、改善したりすることができます。

コントリビュートする

マニフェスト

Tuistは、プロジェクトとワークスペースを定義し、生成プロセスを設定する主な方法として、Swiftファイルをデフォルトとしています。これらのファイルはドキュメント全体を通してマニフェストファイル と呼ばれています。

Swiftを使用するという決定は、パッケージを定義するためにSwiftファイルも使用するSwift Package Managerに触発されました。Swiftを使用するおかげで、内容の正しさを検証し、異なるマニフェストファイル間でコードを再利用するためにコンパイラを活用することができ、構文のハイライト、オートコンプリート、および検証のおかげでファーストクラスの編集エクスペリエンスを提供するためにXcodeを活用することができます。

インフォメーション・キャッシング

マニフェストファイルはコンパイルが必要な Swift ファイルであるため、Tuist はコンパイル結果をキャッシュして解析処理を高速化します。そのため、Tuist を最初に実行したときは、プロジェクトの生成に少し時間がかかるかもしれません。その後の実行は速くなる。

:::

Project.swift {#projectswift}.

`Project.swift` マニフェストは Xcode プロジェクトを宣言します。プロジェクトは、name

プロパティに示された名前で、マニフェストファイルがあるのと同じディレクトリに生成されます。

swift
// Project.swift
let project = Project(
    name: "App",
    targets: [
        // ....
    ]
)

ROOT VARIABLES

マニフェストのルートにあるべき唯一の変数はlet project = Project(...) です。マニフェストのさまざまな部分でコードを再利用する必要がある場合、Swift 関数を使用することができます。

ワークスペース.swift {#workspaceswift}.

デフォルトでは、Tuist は生成されるプロジェクトとその依存関係のプロジェクトを含む Xcode ワークスペース を生成します。何らかの理由でワークスペースをカスタマイズしてプロジェクトを追加したり、ファイルやグループをインクルードしたい場合は、Workspace.swiftマニフェストを定義することで可能です。

swift
// Workspace.swift
import ProjectDescription

let workspace = Workspace(
    name: "App-Workspace",
    projects: [
        "./App", // Path to directory containing the Project.swift file
    ]
)

::: 情報

Tuistは依存関係グラフを解決し、依存関係のプロジェクトをワークスペースに含めます。それらを手動でインクルードする必要はない。これはビルドシステムが依存関係を正しく解決するために必要なことである。

:::

マルチまたはモノプロジェクト

よく出てくる疑問は、ワークスペースで単一のプロジェクトを使うか、複数のプロジェクトを使うかということだ。Tuistのない世界では、単一プロジェクトのセットアップが頻繁なGitコンフリクトにつながるため、ワークスペースの使用が推奨されます。しかし、私たちはTuistが生成したXcodeプロジェクトをGitリポジトリに含めることを推奨していないので、Gitの衝突は問題ではない。したがって、ワークスペースに単一のプロジェクトを使うか、複数のプロジェクトを使うかは、あなた次第です。

Tuistプロジェクトでは、コールド生成時間がより速く(コンパイルするマニフェストファイルがより少ない)、カプセル化の単位としてプロジェクト記述ヘルパーを活用するため、モノプロジェクトに傾いています。しかし、アプリケーションの異なるドメインを表すカプセル化の単位としてXcodeプロジェクトを使用したいかもしれません。

Tuist.swift

Tuistは分かりやすいデフォルトを提供し、プロジェクト構成を簡素化します。しかし、Tuist.swiftをプロジェクトのルートに定義することで設定をカスタマイズすることができます。

swift
import ProjectDescription

let tuist = Tuist(
    project: .tuist(generationOptions: .options(enforceExplicitDependencies: true))
)

Released under the MIT License.