Обновить

Комментарии 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 не резолвится

Исправил

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации