Skip to content
9 / 15

Рабочие пространства go.work: разработка нескольких модулей одновременно

До Go 1.18 править библиотеку и приложение одновременно можно было только через replace на локальный путь — и этот replace регулярно уезжал в коммит, ломая сборку у всех остальных. Рабочее пространство решает ту же задачу без правки go.mod: файл go.work в каталоге над модулями перечисляет их в директиве use, и тулчейн начинает считать локальные копии главнее опубликованных версий. Ключевое свойство — go.work не попадает в репозиторий: он описывает вашу машину, а не проект, поэтому его добавляют в .gitignore. Работает это только для команд, запущенных внутри пространства; сборка в CI видит обычные go.mod и обычные версии. Есть и go.work.sum для сумм модулей, которых нет в отдельных go.sum. Отключается пространство переменной GOWORK=off — полезно, чтобы проверить, что проект собирается и без него. Для настоящего монорепозитория с одним go.mod пространство не нужно вовсе.

Рабочие пространства go.work: разработка нескольких модулей одновременно | JScriptiser