Sto lavorando a un nuovo progetto utilizzando Go e siamo tutti nuovi su Go. Stiamo seguendo la struttura di directory go standard e disponiamo di tutto il codice
$ 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 a un progetto multilingue, ad esempio un back-end rest / http basato su Go e un front-end html / javascript. In tal caso, probabilmente vorrei che la struttura del mio progetto fosse simile a questa:
/
doc/
src/
server/
main.go
module1/
module.go
client/
index.html
Makefile
Ma è davvero necessario avere il codice inserito all'interno del GOPATH?
Come tentativo ho creato un piccolo programma in cui il codice sorgente era al di fuori di GOPATH. Potrei facilmente dividere il progetto in pacchetti, quindi il main
pacchetto potrebbe fare riferimento a un foo
pacchetto in una foo/
cartella usando import "./foo"
.
Per quanto posso vedere, ci sono due cose che non mi permettono:
- 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 server di compilazione di non trovare il proprio spazio di lavoro all'interno di GOPATH
Un tale approccio è scoraggiato? Se è così, perché è così?
Ci sono altri effetti collaterali negativi rispetto ai due che ho elencato?
Tieni presente 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 è sul palco di Shu