Разработка и публикация модулей
Вы можете объединить связанные пакеты в модули, а затем опубликовать модули, чтобы другие разработчики могли их использовать. Эта тема даёт обзор разработки и публикации модулей.
Для поддержки разработки, публикации и использования модулей вы используете:
- рабочий процесс, с помощью которого вы разрабатываете и публикуете модули, улучшая их с новыми версиями со временем. См. Рабочий процесс разработки и публикации модулей.
- практики проектирования, которые помогают пользователям модуля понимать его и переходить на новые версии стабильно. См. Проектирование и разработка.
- децентрализованную систему публикации модулей и получения их кода. Вы делаете ваш модуль доступным для других разработчиков из вашего собственного репозитория и публикуете его с номером версии. См. Децентрализованная публикация.
- поисковую систему пакетов и браузер документации (pkg.go.dev), где разработчики могут найти ваш модуль. См. Обнаружение пакетов.
- конвенцию нумерации версий модулей, которая передаёт ожидания стабильности и обратной совместимости разработчикам, использующим ваш модуль. См. Управление версиями.
- инструменты Go, которые облегчают другим разработчикам управление зависимостями, включая получение исходного кода вашего модуля, обновление и так далее. См. Управление зависимостями.
См. также
- Если вас интересует только использование пакетов, разработанных другими разработчиками, это не тема для вас. Вместо этого см. Управление зависимостями.
- Для руководства, включающего несколько базовых аспектов разработки модулей, см. Руководство: Создание Go модуля.
Рабочий процесс разработки и публикации модулей
Когда вы хотите опубликовать свои модули для других разработчиков, вы следуете определённым соглашениям, чтобы облегчить их использование.
Следующие высокоуровневые шаги описаны более подробно в рабочем процессе выпуска и версионирования модулей.
- Спроектируйте и реализуйте пакеты, которые будут включать в себя модуль.
- Зафиксируйте код в вашем репозитории, используя соглашения, обеспечивающие доступность кода для других через инструменты Go.
- Опубликуйте модуль, чтобы он был доступен для разработчиков.
- Со временем совершенствуйте модуль, выпуская версии с использованием соглашения о номерах версий, которое сигнализирует о стабильности и обратной совместимости каждой версии.
Проектирование и разработка
Ваш модуль будет легче находить и использовать для разработчиков, если функции и пакеты, входящие в него, образуют целостную структуру. При проектировании публичного API модуля старайтесь сделать его функциональность сосредоточенной и чётко определённой.
Также проектируя и разрабатывая модуль с учётом обратной совместимости, вы помогаете пользователям обновляться, минимизируя необходимость изменений в их собственном коде. Вы можете использовать определённые техники в коде, чтобы избежать выпуска версии, нарушающей обратную совместимость. Более подробно об этих техниках можно прочитать в статье Keeping your modules compatible на блоге Go.
Перед публикацией модуля вы можете ссылаться на него в локальной файловой системе с использованием директивы
replace.
Это облегчает написание клиентского кода, вызывающего функции модуля, пока он всё ещё находится в стадии
разработки.
Более подробную информацию см. в разделе «Разработка кода с использованием непубликуемого модуля» в рабочем процессе выпуска и версионирования модулей.
Децентрализованная публикация
В Go вы публикуете свой модуль, добавляя теги к коду в вашем репозитории, чтобы сделать его доступным для использования другими разработчиками. Вам не нужно отправлять ваш модуль в централизованную службу, поскольку инструменты Go могут загрузить ваш модуль напрямую из вашего репозитория (определяемого по пути модуля, который представляет собой URL-адрес без указанной схемы) или с прокси-сервера.
После импорта вашего пакета в их код, разработчики используют инструменты Go (включая команду go get)
для загрузки кода вашего модуля, который будет использоваться для компиляции. Чтобы поддержать эту модель, вы
следуете соглашениям и лучшим практикам, позволяющим инструментам Go (от имени другого разработчика) извлекать
исходный код вашего модуля из вашего репозитория. Например, инструменты Go используют путь модуля, который вы
указали, вместе с номером версии модуля, используемым для тегирования модуля при его выпуске, чтобы найти и
загрузить модуль для его пользователей.
Более подробную информацию о соглашениях и лучших практиках для управления исходным кодом и публикацией можно найти в разделе Managing module source.
Пошаговые инструкции по публикации модуля можно найти в разделе Publishing a module.
Обнаружение пакетов
После того как вы опубликовали свой модуль и кто-то загрузил его с помощью инструментов Go, он станет доступен на сайте обнаружения Go-пакетов по адресу pkg.go.dev. Там разработчики могут искать сайт, находить его и читать документацию.
Чтобы начать работу с модулем, разработчик импортирует пакеты из модуля, а затем запускает команду go
get, чтобы загрузить исходный код для компиляции.
Более подробную информацию о том, как разработчики находят и используют модули, можно найти в разделе Managing dependencies.
Версионирование
При изменении и улучшении вашего модуля со временем вы назначаете номера версий (основанные на модели семантического версионирования), предназначенной для обозначения устойчивости и обратной совместимости каждой версии. Это помогает разработчикам, использующим ваш модуль, определить, когда модуль стабилен, и может ли обновление включать существенные изменения в поведении. Номер версии модуля указывается путем тегирования исходного кода модуля в репозитории с использованием соответствующего номера.
Для получения дополнительной информации о разработке обновлений основных версий см. Разработка обновления основной версии.
Для получения дополнительной информации о том, как вы используете модель семантического версионирования для Go модулей, см. Нумерация версий модулей.