Skip to content

翻訳 🌍

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

コントリビュートする

テンプレート

確立されたアーキテクチャを持つプロジェクトでは、開発者はプロジェクトと一貫性のある新しいコンポーネントや機能をブートストラップしたいかもしれません。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 を使えば、指定したパスにフォルダ全体をコピーすることもできる。

プロジェクト説明ヘルパー

テンプレートはプロジェクト記述ヘルパーの使用をサポートし、テンプレート間でコードを再利用します。

:::

Released under the MIT License.