Sto lavorando a un nuovo progetto usando Go e siamo tutti nuovi a Go. Stiamo seguendo la struttura standard delle directory go e avendo tutto il codice sotto
$GOPATH/src/github.com/companyname/projectname
che è anche la radice di un repository git
Il layout del percorso consigliato standard sembra un po 'strano, specialmente se stiamo lavorando su un progetto multilingue, ad es. un back-end resto / http basato su Go e un front-end html / javascript. In tal caso, vorrei probabilmente che la struttura del mio progetto assomigliasse a questo:
/
doc/
src/
server/
main.go
module1/
module.go
client/
index.html
Makefile
Ma è effettivamente necessario inserire il codice all'interno di GOPATH?
Come tentativo ho creato un piccolo programma in cui il codice sorgente era esterno a GOPATH. Potrei facilmente suddividere il progetto in pacchetti, quindi il pacchetto main
potrebbe fare riferimento a un pacchetto foo
in una cartella foo/
utilizzando import "./foo"
.
Per quanto posso vedere, ci sono due cose che non mi consentono:
- Altro codice non può importare questo codice. Questo non è un problema in quanto stiamo costruendo un servizio specifico per l'azienda.
- Non posso usare
go install
per installarlo. Anche questo non è un problema. La pipeline di build installa lo strumento.
Tuttavia, consente al build server di non avere il proprio spazio di lavoro all'interno di GOPATH
Questo approccio è scoraggiato? Se è così, perché così?
Ci sono altri effetti collaterali negativi rispetto ai due che ho elencato?
Ricorda che questo è un progetto privato per un'azienda, non un codice pubblico open source.
Staccare il progetto reale dal GOPATH sembra allettante, ma bisogna stare attenti a infrangere le regole quando si è in Shu stage