Skip to content

Перевод 🌍

Вы можете перевести или улучшить перевод этой страницы.

Внести вклад

Шаблоны

В проектах с устоявшейся архитектурой разработчики могут захотеть создать новые компоненты или функции, которые будут соответствовать проекту. С помощью tuist scaffold вы можете генерировать файлы на основе шаблона. Вы можете создать свои собственные шаблоны или использовать те, которые поставляются вместе с Tuist. Вот некоторые сценарии, в которых может быть полезен скаффолдинг:

  • Создайте новую функцию, следующую заданной архитектуре: tuist scaffold viper --name MyFeature.
  • Создание новых проектов: tuist scaffold feature-project --name Home

::: инфо НЕОПИНАЕМЫЙ

Tuist не придает значения содержанию ваших шаблонов и тому, для чего вы их используете. Они обязаны находиться только в определенном каталоге.

:::

Определение шаблона

Чтобы определить шаблоны, вы можете выполнить команду

`tuist edit`, а затем создать каталог name_of_template в каталоге

Tuist/Templates, который представляет ваш шаблон. Шаблонам необходим файл манифеста, name_of_template.swift, который описывает шаблон. Поэтому, если вы создаете шаблон под названием framework, вам следует создать новую директорию framework в Tuist/Templates с файлом манифеста 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

INFO

Поскольку платформа является необязательным аргументом, мы также можем вызвать команду без аргумента --platform macos.

Если .string и .files не обеспечивают достаточной гибкости, вы можете использовать язык шаблонов Stencil в случае .file. Кроме того, вы можете использовать дополнительные фильтры, определенные здесь.

Используя интерполяцию строк, \(nameAttribute) выше разрешится в . Если вы хотите использовать фильтры Stencil в определении шаблона, вы можете использовать эту интерполяцию вручную и добавить любые фильтры, которые вам нравятся. Например, вы можете использовать { { { имя | строчная буква } } вместо \(nameAttribute), чтобы получить значение атрибута name в нижнем регистре.

Вы также можете использовать .directory, который дает возможность копировать целые папки по заданному пути.

ПОМОЩНИКИ ПО ОПИСАНИЮ ПРОЕКТА

Шаблоны поддерживают использование

помощников описания проекта для повторного использования кода в шаблонах.

Released under the MIT License.