Pracuję nad nowym projektem przy użyciu Go i wszyscy jesteśmy nowi w Go. Postępujemy zgodnie ze standardową strukturą katalogów go i mamy cały kod poniżej
$ GOPATH / src / github.com / nazwa firmy / nazwa projektu
który jest również katalogiem głównym repozytorium git
Standardowy zalecany układ ścieżki wydaje się nieco dziwny, szczególnie jeśli pracujemy nad projektem wielojęzycznym, np. Zapleczem rest / http opartym na Go oraz interfejsem html / javascript. W takim przypadku prawdopodobnie chciałbym, aby struktura mojego projektu wyglądała następująco:
/
doc/
src/
server/
main.go
module1/
module.go
client/
index.html
Makefile
Ale czy rzeczywiście konieczne jest umieszczenie kodu w GOPATH?
Jako próbę stworzyłem mały program, w którym kod źródłowy znajdował się poza GOPATH. Mogę z łatwością podzielić projekt na pakiety, aby main
pakiet mógł odwoływać się do foo
pakietu w foo/
folderze przy użyciu import "./foo"
.
O ile widzę, są dwie rzeczy, które mnie to nie pozwalają:
- Inny kod nie może zaimportować tego kodu. Nie stanowi to problemu, ponieważ budujemy usługę specjalnie dla firmy.
- Nie mogę użyć
go install
do instalacji. To też nie jest problem. Potok kompilacji instaluje narzędzie.
Pozwala jednak serwerowi kompilacji nie znajdować się w obszarze roboczym GOPATH
Czy takie podejście jest odradzane? Jeśli tak, to dlaczego?
Czy są inne negatywne skutki uboczne niż dwa wymienione przeze mnie?
Pamiętaj, że jest to prywatny projekt dla firmy, a nie publiczny kod typu open source.
Oderwanie rzeczywistego projektu od GOPATH wydaje się kuszące, ale należy być ostrożnym w łamaniu zasad, gdy jesteś na scenie Shu
Aktualizacja 2019
Nie musisz już przechowywać swojego projektu
GOPATH
.Po prostu umieść go w dowolnym katalogu poza
GOPATH
. Następnie wpisz:go mod init github.com/youruser/yourproject
Będziesz dobrze iść.
źródło