Большинство идентификаторов и строк в файле go.mod - это либо пути к модулям, либо их версии.
Путь к модулю должен удовлетворять следующим требованиям:
- Путь должен состоять из одного или нескольких элементов пути, разделенных косой чертой (/, U+002F). Он не должен начинаться или заканчиваться косой чертой.
- Каждый элемент пути представляет собой непустую строку, состоящую из букв ASCII, цифр ASCII и ограниченных знаков препинания ASCII (-, ., _ и ~).
- Элемент пути не может начинаться или заканчиваться точкой ( . , U+002E).
- Префикс элемента до первой точки не должен быть зарезервированным именем файла в Windows, независимо от регистра (CON, com1, NuL и т. д.).
Если путь к модулю указан в директиве require и не заменяется, или если пути к модулям отображаются справа от директивы replace, команде go может потребоваться загрузить модули с этим путем, и должны быть выполнены некоторые дополнительные требования.
- Начальный элемент пути (до первой косой черты, если таковая имеется), по соглашению имя домена, должен содержать только строчные буквы ASCII, цифры ASCII, точки ( . , U+002E) и тире ( - , U+002D); он должен содержать хотя бы одну точку и не может начинаться с тире.
- Для конечного элемента пути в форме /vN, где N выглядит числовым (цифры и точки ASCII), N не должно начинаться с ведущего нуля, не должно быть /v1 и не должно содержать никаких точек.
- Для путей, начинающихся с gopkg.in/, это требование заменяется требованием, чтобы путь соответствовал соглашениям службы gopkg.in.
Версии в файлах go.mod могут быть каноническими или неканоническими.
Каноническая версия начинается с буквы v, за которой следует семантическая версия, соответствующая спецификации Semantic Versioning 2.0.0.
Большинство других идентификаторов и строк могут использоваться как неканонические версии, хотя есть некоторые ограничения, чтобы избежать проблем с файловыми системами, репозиториями и прокси-модулями. Неканонические версии допускаются только в файле go.mod главного модуля (main module). Команда go попытается заменить каждую неканоническую версию на эквивалентную каноническую версию при автоматическом обновлении файла go.mod.
В тех местах, где путь модуля связан с версией (например, в директивах require, replace и exclude), последний элемент пути должен соответствовать версии.
Читайте также:
- Модули в Golang: преобразование пакета в модуль
- Модули в Golang: файл go.mod
- Модули в Golang: файл go.mod, лексические элементы
Комментариев нет:
Отправить комментарий