SwiftGen. Генерируем код для ресурсов
Что такое SwiftFormat?
SwiftGen — это инструмент для генерирования кода для ресурсов. Проще говоря, он генерирует код для наших картинок, цветов, шрифтов, файлов локализации и т. д.
И вот как он работает:
Для чего он нужен?
- Помогает избежать опечаток при работе со строками
- Делает невозможным использование несуществующих файлов
- Автозаполнение
- И все это обеспечивается компилятором
Как его установить?
SwiftGen можно установить через CocoaPods, homebrew, mint, так же его можно вручную добавить в проект. Я считаю, что самый оптимальный способ при работе в команде — это установить SwiftGen через CocoaPods.
Для этого просто нужно добавить следующий под в подфайл:
pod 'SwiftGen', '~> 6.0'
Затем, обновляем поды в директории проекта:
pod update
Далее нужно добавить следующее в run script build phase:
$PODS_ROOT/SwiftGen/bin/swiftgen xcassets -t swift4 -o ${SRCROOT}/Resources/Assets/Assets.swift ${SRCROOT}/Resources/Assets/Assets.xcassets // 1
$PODS_ROOT/SwiftGen/bin/swiftgen fonts -t swift4 -o ${SRCROOT}/Resources/Fonts/Fonts.swift ${SRCROOT}/Resources/Fonts // 2
$PODS_ROOT/SwiftGen/bin/swiftgen colors -t swift4 -o ${SRCROOT}/Resources/Colors/Colors.swift ${SRCROOT}/Resources/Colors/Colors.txt // 3
$PODS_ROOT/SwiftGen/bin/swiftgen strings -t structured-swift4 -o ${SRCROOT}/Resources/Localization/Strings.swift ${SRCROOT}/Resources/Localization/ru.lproj/Localizable.strings // 4
- Генерирует код для xcassets. Мы тут указываем, что генерируем код в Assets.swift из Assets.xcassets, указывая их пути.
- Таким же образом генерирует код для шрифтов.
- Таким же образом генерирует код для цветов.
- Таким же образом генерирует код для файлов локализации.
Можно так же генерировать код для Core Data, Interface Builder files, JSON and YAML files, Plists и т. д.
Теперь SwiftGen будет генерировать код для нужных нам ресурсов при каждой сборке проекта. Вот каким образом можно использовать добавленные ресурсы:
let beerIcon = Asset.beer.image
let boozeColor = ColorName.booze.color
let helloText = L10n.hello
Заключение
Структуризация ресурсов проекта не менее важно самой архитектуры проекта. SwiftGen дает нам быстрый и актуальный доступ ко всем нашим ресурсам и избавляет нас от отпечаток и использования несуществующих ресурсов.
В посте я показал самый минимум, как быстро можно внедрить SwiftGen в свой проект. Подробнее про то, как можно использовать SwiftGen через терминал, как добавлять свои шаблоны, как генерировать код для CoreData, JSON и прочее, можно узнать на GitHub.