Я не против open-source, позвольте мне объяснить!!!
Flutter - это инструментарий пользовательского интерфейса с открытым исходным кодом, и на pub.dev доступно большое количество открытых пакетов, что действительно облегчает жизнь разработчика. Однако иногда, в связи с требованиями организации и продукта, Вам приходится создавать частный пакет Flutter, который может содержать отдельный модуль приложения, бизнес-логику, алгоритмы шифрования, премиум-активы, конфиденциальные платежные шлюзы и т.д., которые Вы не хотели бы публиковать в открытом доступе.
Следовательно, может быть множество причин для того, чтобы создать частный пакет Flutter и не опубликовывать его на pub.dev. Для этого каждому разработчику Flutter важно знать "Как создать частный/неопубликованный пакет Flutter". Давайте погрузимся глубже и выясним, как это сделать!
Знаете ли вы?
После публикации пакета в pub.dev его нельзя снять с публикации или удалить.
Создание пакета Flutter
Чтобы создать пакет Flutter, откройте свой IDE и создайте новый проект Flutter.
Единственным отличием является, что в графе Project type необходимо выбрать Package.
В файле pubspec.yaml вашего пакета добавьте publish_to: none, чтобы предотвратить публикацию.
Использование частного пакета Flutter в локальном каталоге
В своем основном проекте Flutter Вы можете обратиться к локальному каталогу пакета следующим образом:
Однако это не лучший вариант, так как пакет размещается в Вашем локальном каталоге, и Ваши коллеги не смогут работать над ним. Идеальным вариантом было бы разместить его в частном git-репозитории.
Размещение частного пакета Flutter в частном Git-репозитории
Создайте частный git-репозиторий и разместите в нем исходный код вашего пакета.
После этого можно начинать использовать этот пакет на git-хостинге вместо локального каталога.
Скопируйте SSH URL репозитория и направьте его в ваш основной проект Flutter pubspec.yaml следующим образом:
Почти готово, Вы успешно включили частный репозиторий пакетов в свой pubspec, но мы еще не подтвердили наш доступ к репозиторию. Если Вы запустите flutter pub get прямо сейчас, он выдаст следующую ошибку, что вполне логично:
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
exit code: 128
Доступ к частному пакету flutter, размещенному на Git
Вам и каждому сотруднику, желающему использовать этот частный пакет, необходимо выполнить следующие действия, чтобы подтвердить свой доступ к приватному репозиторию. (Не забудьте сначала добавить его как соавтора ;p)
- Откройте Git Bash и сгенерируйте SSH-ключ для электронной почты, используя эту команду:
ssh-keygen -t ed25519 -C "mail@gmail.com".
Нажмите Enter трижды, чтобы продолжить работу с настройками по умолчанию.
- Запустите эту команду, чтобы убедиться, что SSH Agent запущен:
eval "$(ssh-agent -s)".
- Добавьте ваш SSH-ключ в SSH Agent, выполнив эту команду:
ssh-add ~/.ssh/id_ed25519
- Теперь выполните последнюю команду, чтобы скопировать Ваш открытый ключ SSH в буфер обмена.
clip < ~/.ssh/id_ed25519.pub
Теперь Ваш открытый SSH-ключ скопирован, просто вставьте его в свою учетную запись Github > Settings > SSH & Deploy Keys > New SSH Key
После добавления SSH-ключа попробуйте снова выполнить команду flutter pub get, и на этот раз она не должна дать сбой.
Если это не удалось, Вы можете выполнить эту команду, чтобы добавить GitHub в список известных хостов:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
Вуаля! Готово! Спасибо, что читаете нас и следите за нами. Благодаря этой статье Вы знаете, как сделать приватные пакеты Flutter, доступ к которым есть только у Вас или ваших коллег.
Переведено на русский язык с сайта: https://medium.com/flutter-community/make-your-private-flutter-package-23a75ba899