
Комментарии 7
Не советую СПМ для более крупных проектов.
1) Если у вас есть Основная аппка и экстеншены, то СПМ будет тупо дублировать ресурсы под каждый экстеншен (https://www.emergetools.com/blog/posts/make-your-ios-app-smaller-with-dynamic-frameworks)
2) Вы описали удобные функции в этом Package.swift для DSL, это удобно, но если в будущем понадобиться создать новый Package.swift что бы туда что то перенести, то вам придется код DSL туда опять дублировать.
3) Если проект будет более большим, то будет бить в икскоде по производительности https://docs.tuist.dev/en/guides/features/projects/adoption/migrate/swift-package
Поэтому я бы посоветовал просто использовать Tuist для всего этого, и там можете описать DSL свой подход для удобства и спокойно проект создавать. Рекомендую юзать buildableFolders, что бы файлы появлялись автоматически в икскоде, удобно когда с ИИ используешь.
что бы файлы появлялись автоматически в икскоде, удобно когда с ИИ используешь
Вроде туист тут не обязателен, сейчас такое по дэфолту в Xcode новых проектах.
Но с посылом согласен, swiftpm самый худший менеджер созданный для разработки под iOS, но для небольших проектов на пару человек вполне пойдет по личным ощущениям.
Tuist поможет избавиться от тыканья добавление зависимостей в самом икскоде, и избавит от конфликтов с pbproject (огромными файлами проекта). Ну и есть всякие удобные генераторы ресурсов что бы к ним обращаться напрямую. Ну и всякие прикольные штуки как кеширование внешних зависимостей, что бы каждый раз не собирать их в икскоде.
Писал тулу недавно для постройки графа SPM, обсмотрел тонну swifpm файлов, всегда бесило что там кто-то придумывает свой дсл и черт ногу сломит что там происходит) Хорошо есть
swift package dump-package --package-pathчтобы вернуть всё обратно в нормальный вид.
Даже в самом swiftpm пишут в простом понятном стиле https://github.com/swiftlang/swift-package-manager/blob/main/Package.swift
Спасибо за статью, но я бы это больше отнес к вредным советам, но дело вкуса конечно, никто не запретит вам так делать)

Большое спасибо за фидбек. В статье не указал, но в xCode не требуется добавлять абсолютно все, большое спасибо что подсветили проблемы, изучу это, проанализирую. В продакшн проекте у меня 35 модулей, полет нормальный
В демо проекте package graph не резолвится
Пишем декларативный Package.swift: DSL для модульной архитектуры iOS проекта