Задать вопрос
@coolstudent

Golang как сделать проект вне GOPATH?

Собственно хочется иметь возможность отвязаться от помещения проектов в GOPATH и GOROOT и вообще в любые заданные переменными окружения пути и без каких-либо созданий модуля из проекта ибо проект это программа а не модуль(модуль в моем понимании чтото типа библиотеки) и исключить необходимость чтото загружать на гитхаб. Хочется как в PHP - установил композер, установил зависимости в каталог проекта и все нормально работает. Есть ли такой вариант? По возможности прошу инструменты под винду но и под линукс не откажусь. Читал в инете про вендоринг голанга но так и не раскурил. В одних местах пишется что вендоринг позволяет делать проект вне гопаса, в других же наоборот что все должно быть внутри гопаса. Кому верить?
  • Вопрос задан
  • 422 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
@PapaStifflera
Родился, вырос...
У вас неверное представление о модулях в Go.
Они как раз про гибкое управление зависимостями. Позволяют, например, использовать несколько версий (возможно несовместимых между собой) одного и того же модуля в рамках проекта. Ну и плюс не нужно ставить ничего дополнительного вроде glide/dep etc. - go build сам подтянет все необходимое.
Ответ написан
Комментировать
Просто создаете папку проекта вне GOPATH, делаете в ней
go mod init your/module/path
Это необязательно может быть путем на гитхаб, просто придумайте себе название проекта, это и будет именем модуля. Все вложенные модули буете импортить как your/module/path/submodule/path.
В принципе все, просто потом вызовете из корня проекта go build your/module/path/main/module/path (указав путь к модулю, в котором у нас находится main) и гошка все соберет, заодно пропишет в go.mod версии всех ваших зависимостей, позволяя делать повторяющиеся сборки.
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
У вас не особо есть выбор.

1. Выбрать GOPATH, но это устаревший путь.
2. Понадеяться на "официальный эксперимент" dep.
3. Не принимать близко к сердцу понятие "модуль".

vgo - это как раз эдакий composer для golang, причем развиваемый вместе с компилятором
Ответ написан
Комментировать
@coolstudent Автор вопроса
Благодарю всех за ответы. Реально по модулям понял. Также скачал проект из библиотеки проектов что на сайте языка который был организован как модуль и он у меня нормально скачал зависимости и собрался вне гопаса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы