Разработка и публикация модулей

Вы можете объединить связанные пакеты в модули, а затем опубликовать модули, чтобы другие разработчики могли их использовать. Эта тема даёт обзор разработки и публикации модулей.

Для поддержки разработки, публикации и использования модулей вы используете:

  • рабочий процесс, с помощью которого вы разрабатываете и публикуете модули, улучшая их с новыми версиями со временем. См. Рабочий процесс разработки и публикации модулей.
  • практики проектирования, которые помогают пользователям модуля понимать его и переходить на новые версии стабильно. См. Проектирование и разработка.
  • децентрализованную систему публикации модулей и получения их кода. Вы делаете ваш модуль доступным для других разработчиков из вашего собственного репозитория и публикуете его с номером версии. См. Децентрализованная публикация.
  • поисковую систему пакетов и браузер документации (pkg.go.dev), где разработчики могут найти ваш модуль. См. Обнаружение пакетов.
  • конвенцию нумерации версий модулей, которая передаёт ожидания стабильности и обратной совместимости разработчикам, использующим ваш модуль. См. Управление версиями.
  • инструменты Go, которые облегчают другим разработчикам управление зависимостями, включая получение исходного кода вашего модуля, обновление и так далее. См. Управление зависимостями.

См. также

Рабочий процесс разработки и публикации модулей

Когда вы хотите опубликовать свои модули для других разработчиков, вы следуете определённым соглашениям, чтобы облегчить их использование.

Следующие высокоуровневые шаги описаны более подробно в рабочем процессе выпуска и версионирования модулей.

  1. Спроектируйте и реализуйте пакеты, которые будут включать в себя модуль.
  2. Зафиксируйте код в вашем репозитории, используя соглашения, обеспечивающие доступность кода для других через инструменты Go.
  3. Опубликуйте модуль, чтобы он был доступен для разработчиков.
  4. Со временем совершенствуйте модуль, выпуская версии с использованием соглашения о номерах версий, которое сигнализирует о стабильности и обратной совместимости каждой версии.

Проектирование и разработка

Ваш модуль будет легче находить и использовать для разработчиков, если функции и пакеты, входящие в него, образуют целостную структуру. При проектировании публичного 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 модулей, см. Нумерация версий модулей.

GoRu.dev Golang на русском

На сайте представлена адаптированная под русский язык документация языка программирования Golang