SwiftGen. Генерируем код для ресурсов

Что такое SwiftFormat?

SwiftGen — это инструмент для генерирования кода для ресурсов. Проще говоря, он генерирует код для наших картинок, цветов, шрифтов, файлов локализации и т. д.
И вот как он работает:

Для чего он нужен?

  1. Помогает избежать опечаток при работе со строками
  2. Делает невозможным использование несуществующих файлов
  3. Автозаполнение
  4. И все это обеспечивается компилятором

Как его установить?

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
  1. Генерирует код для xcassets. Мы тут указываем, что генерируем код в Assets.swift из Assets.xcassets, указывая их пути.
  2. Таким же образом генерирует код для шрифтов.
  3. Таким же образом генерирует код для цветов.
  4. Таким же образом генерирует код для файлов локализации.

Можно так же генерировать код для 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.

Поделиться
Отправить
2 мес   tutorial