Ich arbeite mit Go an einem neuen Projekt und wir sind alle neu in Go. Wir folgen der standardmäßigen go-Verzeichnisstruktur und haben den gesamten Code darunter
$ GOPATH / src / github.com / firmenname / projektname
Das ist auch die Wurzel eines Git-Repository
Das standardmäßig empfohlene Pfadlayout erscheint etwas seltsam, insbesondere wenn wir an einem mehrsprachigen Projekt arbeiten, z. B. einem Go-basierten Rest / http-Backend und einem HTML / Javascript-Frontend. In diesem Fall möchte ich wahrscheinlich, dass meine Projektstruktur so aussieht:
/
doc/
src/
server/
main.go
module1/
module.go
client/
index.html
Makefile
Aber ist es tatsächlich notwendig, den Code im GOPATH zu platzieren?
Als Versuch habe ich ein kleines Programm erstellt, in dem sich der Quellcode außerhalb von GOPATH befand. Ich könnte das Projekt leicht in Pakete aufteilen, so dass das main
Paket mit auf ein foo
Paket in einem foo/
Ordner verweisen könnte import "./foo"
.
Soweit ich sehen kann, gibt es zwei Dinge, die mir dies verbieten:
- Anderer Code kann diesen Code nicht importieren. Dies ist kein Problem, da wir einen Service speziell für das Unternehmen aufbauen.
- Ich kann es nicht verwenden
go install
, um es zu installieren. Dies ist auch kein Problem. Die Build-Pipeline installiert das Tool.
Auf dem Build-Server darf sich der Arbeitsbereich jedoch nicht innerhalb von GOPATH befinden
Ist ein solcher Ansatz entmutigt? Wenn ja, warum?
Gibt es andere negative Nebenwirkungen als die beiden, die ich aufgelistet habe?
Denken Sie daran, dass dies ein privates Projekt für ein Unternehmen ist und kein öffentlicher Open Source-Code.
Das eigentliche Projekt vom GOPATH zu trennen, scheint verlockend, aber man sollte vorsichtig sein, wenn man die Regeln verletzt, wenn man sich auf der Shu- Bühne befindet