テンプレート
確立されたアーキテクチャを持つプロジェクトでは、開発者はプロジェクトと一貫性のある新しいコンポーネントや機能をブートストラップしたいかもしれません。tuist scaffold を使えば、テンプレートからファイルを生成することができます。独自のテンプレートを定義することも、Tuistで提供されているテンプレートを使用することもできます。これらはscaffoldが役に立つかもしれないいくつかのシナリオです:
tuist scaffold viper --name MyFeature.- 新規プロジェクトの作成:
tuist scaffold feature-project --name Home
::: 情報 非観測的
Tuistはテンプレートの内容や使用目的については一切関知しません。特定のディレクトリにあることが要求されるだけです。
:::
テンプレートの定義
テンプレートを定義するには、tuist editを実行し、Tuist/Templates の下に、name_of_template という、テンプレートを表すディレクトリを作成します。テンプレートには、name_of_template.swift という、テンプレートを説明するマニフェスト・ファイルが必要です。したがって、framework というテンプレートを作成する場合、Tuist/Templates に新しいディレクトリframework を作成し、framework.swift というマニフェスト・ファイルを作成する必要があります:
swift
import ProjectDescription
let nameAttribute: Template.Attribute = .required("name")
let template = Template(
description: "Custom template",
attributes: [
nameAttribute,
.optional("platform", default: "ios"),
],
items: [
.string(
path: "Project.swift",
contents: "My template contents of name \(nameAttribute)"
),
.file(
path: "generated/Up.swift",
templatePath: "generate.stencil"
),
.directory(
path: "destinationFolder",
sourcePath: "sourceFolder"
),
]
)テンプレートを使う
テンプレートを定義したら、scaffold コマンドから使用することができます:
bash
tuist scaffold name_of_template --name Name --platform macos::: 情報
プラットフォームはオプションの引数なので、--platform macos 引数なしでコマンドを呼び出すこともできる。
:::
.string や.files では柔軟性が足りない場合は、.file のケースで Stencil テンプレート言語を活用できます。それ以外にも、ここで定義された追加のフィルターを使うこともできます。
文字列補間を使用すると、上記の\(nameAttribute) は に解決されます。テンプレート定義でステンシル・フィルターを使用したい場合は、手動でこの補間を使用し、好きなフィルターを追加することができます。例えば、{ { 名前 | 小文字 } } を使うことができます。name 属性の小文字の値を取得するには、(nameAttribute) の代わりに { { name | 小文字 } を使用します。
また、.directory を使えば、指定したパスにフォルダ全体をコピーすることもできる。
プロジェクト説明ヘルパー
テンプレートはプロジェクト記述ヘルパーの使用をサポートし、テンプレート間でコードを再利用します。
:::
