Skip to content

Перевод 🌍

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

Внести вклад

Плагины

Плагины - это инструмент для совместного и повторного использования артефактов Tuist в нескольких проектах. Поддерживаются следующие артефакты:

Обратите внимание, что плагины - это простой способ расширить функциональность Tuist. Поэтому есть некоторые ограничения, которые следует учитывать:

  • Плагин не может зависеть от другого плагина.
  • Плагин не может зависеть от сторонних пакетов Swift
  • Плагин не может использовать хелперы описания проекта из проекта, в котором используется плагин.

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

Типы плагинов

Вспомогательный плагин для описания проекта

Плагин-помощник для описания проекта представлен директорией, содержащей файл манифеста Plugin.swift, в котором объявлено имя плагина, и директорию ProjectDescriptionHelpers, содержащую файлы-помощники Swift.

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
└── ...

Имя шаблона - это camel case версия типа ресурса:

Тип ресурсаИмя файла шаблона
СтруныСтроки.трафарет
АктивыАктивы.трафарет
Списки недвижимостиPlists.stencil
ШрифтыШрифты.трафарет
Основные данныеCoreData.stencil
Построитель интерфейсовInterfaceBuilder.stencil
JSONJSON.stencil
YAMLYAML.stencil

При определении синтезаторов ресурсов в проекте можно указать имя плагина, чтобы использовать шаблоны из этого плагина:

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

Плагин задачи deprecated

DEPRECATED

Плагины задач устарели. Ознакомьтесь с этой записью в блоге, если вы ищете решение для автоматизации своего проекта.

Задачи - это $PATH-экспонируемые исполняемые файлы, которые вызываются командой tuist, если они следуют соглашению об именовании tuist-<task-name>. В предыдущих версиях Tuist предоставлял некоторые слабые соглашения и инструменты под tuist plugin для build, run, test и archive задач, представленных исполняемыми файлами в Swift-пакетах, но мы отказались от этой возможности, поскольку она увеличивает нагрузку на поддержку и сложность инструмента.

Если вы использовали Tuist для распределения задач, мы рекомендуем создать свой

  • Вы можете продолжать использовать ProjectAutomation.xcframework, распространяемый с каждым выпуском Tuist, чтобы иметь доступ к графу проекта из вашей логики с помощью let graph = try Tuist.graph(). Команда использует системный процесс для выполнения команды tuist и возвращает представление графа проекта в памяти.
  • Для распространения задач мы рекомендуем включать жирные бинарники, поддерживающие arm64 и x86_64, в релизы на GitHub и использовать Mise в качестве инструмента установки. Чтобы указать Mise, как установить ваш инструмент, вам понадобится репозиторий плагинов. Вы можете использовать Tuist's в качестве ссылки.
  • Если вы назовете свой инструмент 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 соберет плагины в глобальный каталог кэша.

NO VERSION RESOLUTION

Как вы могли заметить, мы не предоставляем разрешение версий для плагинов. Мы рекомендуем использовать Git-теги или SHA для обеспечения воспроизводимости.

PROJECT DESCRIPTION HELPERS PLUGINS

При использовании плагина-помощника для описания проекта имя модуля, в котором содержатся помощники, является именем плагина

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

Released under the MIT License.