Skip to content

翻訳 🌍

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

コントリビュートする

プラグイン

プラグインは、複数のプロジェクトでTuistの成果物を共有・再利用するためのツールである。以下の成果物がサポートされている:

プラグインはTuistの機能を拡張する簡単な方法として設計されていることに注意してください。そのため、いくつか考慮すべき制限があります

  • プラグインは他のプラグインに依存することはできません。
  • プラグインはサードパーティのSwiftパッケージに依存できない
  • プラグインは、そのプラグインを使うプロジェクトのプロジェクト記述ヘルパーを使うことはできません。

より柔軟性が必要な場合は、ツールの機能を提案するか、Tuistの生成フレームワークTuistGeneratorに基づいて独自のソリューションを構築することを検討してください。

プラグインの種類

プロジェクト説明ヘルパープラグイン {#project-description-helper-plugin}.

プロジェクト記述ヘルパープラグインは、プラグインの名前を宣言するPlugin.swift マニフェストファイルとヘルパー Swift ファイルを含むProjectDescriptionHelpers ディレクトリを含むディレクトリによって表されます。

bash
import ProjectDescription

let plugin = Plugin(name: "MyPlugin")
bash
.
├── ...
├── Plugin.swift
├── ProjectDescriptionHelpers
└── ...

リソースアクセサテンプレートプラグイン

合成されたリソース・アクセッサを共有する必要がある場合、このタイプのプラグインを使用できます。プラグインは、プラグインの名前を宣言するPlugin.swift

マニフェスト ファイルと、リソース アクセッサ テンプレート ファイルを含むResourceSynthesizers ディレクトリを含むディレクトリで表されます。

bash
import ProjectDescription

let plugin = Plugin(name: "MyPlugin")
bash
.
├── ...
├── Plugin.swift
├── ResourceSynthesizers
├───── Strings.stencil
├───── Plists.stencil
├───── CustomTemplate.stencil
└── ...

テンプレートの名前は、リソースタイプのキャメルケースバージョンです:

リソースタイプテンプレートファイル名
ストリングス文字列.ステンシル
資産資産.ステンシル
物件リストプリスト.ステンシル
フォントフォント.ステンシル
コア・データCoreData.stencil(コアデータ・ステンシル
インターフェースビルダーInterfaceBuilder.stencil
JSONJSON.stencil
ヤムルYAML.stencil

プロジェクトでリソース・シンセサイザーを定義する際、プラグイン名を指定することで、プラグインのテンプレートを使用することができます:

swift
let project = Project(resourceSynthesizers: [.strings(plugin: "MyPlugin")])

タスクプラグイン deprecatedタスクプラグイン

DEPRECATED

タスク・プラグインは非推奨です。プロジェクトの自動化ソリューションをお探しなら、このブログ記事をチェックしてください。

タスクは$PATH-公開された実行可能ファイルであり、命名規則tuist-<task-name> に従っていればtuist コマンドを通して呼び出すことができる。以前のバージョンでは、Tuistはbuild,run,test andarchive tasks represented by executables in Swift Packagesのために、tuist plugin の下でいくつかの弱い規約とツールを提供していましたが、ツールのメンテナンス負担と複雑さを増加させるので、この機能は非推奨としました。

タスクの分散にTuistを使用していた場合は、次のように構築することをお勧めします。

  • Tuistリリースごとに配布されるProjectAutomation.xcframework を使い続けることで、let graph = try Tuist.graph() でロジックからプロジェクトグラフにアクセスすることができます。このコマンドはsytemプロセスを使用してtuist コマンドを実行し、プロジェクトグラフのインメモリ表現を返します。
  • タスクを配布するには、arm64x86_64 をサポートするファットバイナリを GitHub リリースに含め、インストールツールとして Mise を使用することをお勧めします。あなたのツールのインストール方法をMiseに指示するには、プラグインリポジトリが必要です。Tuistの](https://github.com/asdf-community/asdf-tuist)を参考にしてください。
  • ツールの名前をtuist-{xxx} とし、ユーザがmise install を実行することでインストールできるようにした場合、ユーザはそれを直接呼び出すか、tuist xxx を通して実行することができます。

プロジェクト・オートメーションの未来

私たちは、ProjectAutomationXcodeGraph のモデルを、プロジェクトグラフの全体をユーザに公開する単一の下位互換性のあるフレームワークに統合する予定です。さらに、生成ロジックを新しいレイヤー、XcodeGraph に抽出し、独自のCLIからも使用できるようにします。これは、あなた自身のTuistを構築するようなものだと考えてください。

プラグインを使う

プラグインを使用するには、プロジェクトの

`Tuist.swift`

マニフェスト ファイルに追加する必要があります:

swift
import ProjectDescription


let tuist = Tuist(
    project: .tuist(plugins: [
        .local(path: "/Plugins/MyPlugin")
    ])
)

異なるリポジトリにあるプロジェクト間でプラグインを再利用したい場合は、プラグインをGitリポジトリにプッシュし、Tuist.swift ファイルで参照することができます:

swift
import ProjectDescription


let tuist = Tuist(
    project: .tuist(plugins: [
        .git(url: "https://url/to/plugin.git", tag: "1.0.0"),
        .git(url: "https://url/to/plugin.git", sha: "e34c5ba")
    ])
)

プラグインを追加した後、tuist install 、グローバル・キャッシュ・ディレクトリにあるプラグインを取得する。

::情報 バージョン情報なし

お気づきかもしれませんが、私たちはプラグインのバージョン解決を提供していません。再現性を確保するために、GitタグやSHAを使うことをお勧めします。

:::

PROJECT DESCRIPTION HELPERS PLUGINS

プロジェクト記述ヘルパーのプラグインを使うとき、ヘルパーを含むモジュールの名前がプラグインの名前になる

swift
import ProjectDescription
import MyTuistPlugin
let project = Project.app(name: "MyCoolApp", platform: .iOS)

Released under the MIT License.