Comments 4
Представьте себе какую-нибудь стороннюю библиотеку вроде Sentry или Crashlytics на 800 Мб. При очистке кэшей каждый раз приходится сидеть и ждать, пока она скачается из интернета. Вместо этого мы ее сохраним себе, и при работе кода библиотека будет подтягиваться с компьютера, что сильно сэкономит время.
Сколько свободного места занимает такой проект на диске локально?
Привет. Столько, сколько весит кодовая база приложения и всех депенденсов, которые положили локально. Мы готовы пожертвовать местом на диске в угоду скорости резолва зависимостей в хкоде. Особенно учитывая, что это происходит достаточно часто
Спрашиваю, потому что я сталкивался с такими проблемами на крупных проектах:
проект настолько огромный, что через Xcode взаимодействовать с ним нереально. Из-за этого программистам приходится работать через текстовые редакторы и консоль. Кроме того без внешних накопителей нельзя выкачать проект второй раз (в пк не хватает объема ssd) - иногда бывает нужно для сравнения двух версий
проект сам по себе небольшой, но с большими сторонними sdk (например, рекламными). Если сохранять это все просто в git, то вы почти всегда сможете выкачать из него рабочую версию, но размер такого репозитория быстро растет
Мы не храним сторонние библиотеки в репозитории с проектом — они подключаются только на локальной машине. В git попадает чистый проект с внешними зависимостями.
Обычно мы добавляем одну и ту же зависимость и как локальную, и как удалённую. В таргете всегда указываем ремоут, а локал нужен лишь для удобства разработки: так быстрее резолвятся зависимости и проще править код прямо в проекте.
На CI/CD все локальные подключения убираются, происходит "честная" сборка с удалёнными зависимостями. Это позволяет сразу отловить забытые изменения — они всплывают на этапе merge request.
Такой подход даёт гибкость: можно временно подключить нужный пакет локально, поработать с ним, потом убрать — не влияя на чистоту основной сборки.
Да, если зависимостей становится слишком много и они занимают ощутимый объём, есть смысл хранить их на внешнем накопителе — это решает проблему с ограниченным местом на диске.
Как правильно организовать проект c модульной архитектурой в iOS-разработке