Wtyczki
Wtyczki są narzędziem do udostępniania i ponownego wykorzystywania artefaktów Tuist w wielu projektach. Obsługiwane są następujące artefakty:
- Pomocnicy opisu projektu w wielu projektach.
- Szablonyw wielu projektach.
- Zadania w wielu projektach.
- Szablon Resource Accessor w wielu projektach
Należy pamiętać, że wtyczki zostały zaprojektowane jako prosty sposób na rozszerzenie funkcjonalności Tuist. W związku z tym istnieją pewne ograniczenia, które należy wziąć pod uwagę:
- Wtyczka nie może zależeć od innej wtyczki.
- Wtyczka nie może zależeć od pakietów Swift innych firm
- Wtyczka nie może używać pomocników opisu projektu z projektu, który używa wtyczki.
Jeśli potrzebujesz większej elastyczności, rozważ zasugerowanie funkcji dla narzędzia lub zbudowanie własnego rozwiązania w oparciu o strukturę generowania Tuist, TuistGenerator.
Typy wtyczek
Wtyczka pomocnicza opisu projektu
Wtyczka pomocnicza opisu projektu jest reprezentowana przez katalog zawierający plik manifestu Plugin.swift, który deklaruje nazwę wtyczki oraz katalog ProjectDescriptionHelpers zawierający pomocnicze pliki Swift.
bash
import ProjectDescription
let plugin = Plugin(name: "MyPlugin")bash
.
├── ...
├── Plugin.swift
├── ProjectDescriptionHelpers
└── ...Wtyczka szablonów dostępu do zasobów
Jeśli potrzebujesz udostępnić
syntetyzowane akcesory zasobów, możesz użyć tego typu wtyczki. Wtyczka jestreprezentowana przez katalog zawierający plik manifestu Plugin.swift, który deklaruje nazwę wtyczki oraz katalog ResourceSynthesizers zawierający pliki szablonów akcesorów zasobów.
bash
import ProjectDescription
let plugin = Plugin(name: "MyPlugin")bash
.
├── ...
├── Plugin.swift
├── ResourceSynthesizers
├───── Strings.stencil
├───── Plists.stencil
├───── CustomTemplate.stencil
└── ...Nazwa szablonu to camel case wersja typu zasobu:
| Typ zasobu | Nazwa pliku szablonu |
|---|---|
| Struny | Strings.stencil |
| Aktywa | Assets.stencil |
| Listy nieruchomości | Plists.stencil |
| Czcionki | Fonts.stencil |
| Dane podstawowe | CoreData.stencil |
| Konstruktor interfejsów | InterfaceBuilder.stencil |
| JSON | JSON.stencil |
| YAML | YAML.stencil |
Podczas definiowania syntezatorów zasobów w projekcie można określić nazwę wtyczki, aby użyć szablonów z wtyczki:
swift
let project = Project(resourceSynthesizers: [.strings(plugin: "MyPlugin")])Wtyczka zadań deprecated
USUNIĘTO
Wtyczki zadań są przestarzałe. Sprawdź ten wpis na blogu, jeśli szukasz rozwiązania automatyzacji dla swojego projektu.
Zadania to $PATH-eksponowane pliki wykonywalne, które można wywołać za pomocą polecenia tuist, jeśli są zgodne z konwencją nazewnictwa tuist-. We wcześniejszych wersjach Tuist zapewniał pewne słabe konwencje i narzędzia pod tuist plugin do build, run, test i archive zadań reprezentowanych przez pliki wykonywalne w pakietach Swift, ale przestaliśmy korzystać z tej funkcji, ponieważ zwiększa ona obciążenie związane z utrzymaniem i złożoność narzędzia.
Jeśli korzystasz z Tuist do dystrybucji zadań, zalecamy zbudowanie swojego
- Możesz nadal korzystać z
ProjectAutomation.xcframeworkdystrybuowanego z każdą wersją Tuist, aby mieć dostęp do grafu projektu z poziomu logiki za pomocąlet graph = try Tuist.graph(). Polecenie wykorzystuje proces systemowy do uruchomienia poleceniatuisti zwraca reprezentację grafu projektu w pamięci. - Aby dystrybuować zadania, zalecamy dołączenie grubego pliku binarnego obsługującego
arm64ix86_64w wydaniach GitHub i użycie Mise jako narzędzia instalacyjnego. Aby poinstruować Mise, jak zainstalować narzędzie, potrzebne będzie repozytorium wtyczek. Możesz użyć Tuist's jako odniesienia. - Jeśli nazwiesz swoje narzędzie
tuist-{xxx}i użytkownicy mogą je zainstalować uruchamiającmise install, mogą je uruchomić bezpośrednio lub poprzeztuist xxx.
PRZYSZŁOŚĆ PROJEKTOWANIA
Planujemy skonsolidować modele ProjectAutomation i XcodeGraph w jeden, kompatybilny wstecz framework, który udostępni użytkownikowi cały graf projektu. Co więcej, wyodrębnimy logikę generowania do nowej warstwy, XcodeGraph, której można również używać z własnego CLI. Pomyśl o tym jak o budowaniu własnego Tuist.
Korzystanie z wtyczek
Aby użyć wtyczki, należy dodać ją do pliku manifestu projektu
`Tuist.swift`:swift
import ProjectDescription
let tuist = Tuist(
project: .tuist(plugins: [
.local(path: "/Plugins/MyPlugin")
])
)Jeśli chcesz ponownie użyć wtyczki w projektach, które znajdują się w różnych repozytoriach, możesz przesłać wtyczkę do repozytorium Git i odwołać się do niej w pliku 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")
])
)Po dodaniu wtyczek, tuist install pobierze wtyczki z globalnego katalogu cache.
BRAK ROZWIĄZANIA WERSJI
Jak być może zauważyłeś, nie zapewniamy rozdzielczości wersji dla wtyczek. Zalecamy używanie tagów Git lub SHA, aby zapewnić powtarzalność.
OPIS PROJEKTU HELPERS PLUGINS
W przypadku korzystania z wtyczki pomocników opisu projektu, nazwa modułu zawierającego pomocników jest nazwą wtyczki
swift
import ProjectDescription
import MyTuistPlugin
let project = Project.app(name: "MyCoolApp", platform: .iOS)