プラグイン
プラグインは、複数のプロジェクトで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 |
| JSON | JSON.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コマンドを実行し、プロジェクトグラフのインメモリ表現を返します。 - タスクを配布するには、
arm64とx86_64をサポートするファットバイナリを GitHub リリースに含め、インストールツールとして Mise を使用することをお勧めします。あなたのツールのインストール方法をMiseに指示するには、プラグインリポジトリが必要です。Tuistの](https://github.com/asdf-community/asdf-tuist)を参考にしてください。 - ツールの名前を
tuist-{xxx}とし、ユーザがmise installを実行することでインストールできるようにした場合、ユーザはそれを直接呼び出すか、tuist xxxを通して実行することができます。
プロジェクト・オートメーションの未来
私たちは、ProjectAutomation とXcodeGraph のモデルを、プロジェクトグラフの全体をユーザに公開する単一の下位互換性のあるフレームワークに統合する予定です。さらに、生成ロジックを新しいレイヤー、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)