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.

THE FUTURE OF PROJECTAUTOMATION

Мы планируем объединить модели 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.