Go를 사용하여 새 프로젝트를 진행 중이며 모두 Go에 익숙하지 않습니다. 우리는 표준 go 디렉토리 구조를 따르고 있으며 모든 코드를
$ GOPATH / src / github.com / companyname / projectname
이것은 또한 git 저장소의 루트입니다
표준 권장 경로 레이아웃은, 특히 Go 기반 rest / http 백엔드 및 html / javascript 프론트 엔드와 같은 다국어 프로젝트에서 작업하는 경우 약간 이상하게 보입니다. 이 경우 프로젝트 구조가 다음과 같이 표시되기를 원할 것입니다.
/
doc/
src/
server/
main.go
module1/
module.go
client/
index.html
Makefile
그러나 실제로 GOPATH 안에 코드를 배치해야합니까?
시도로 소스 코드가 GOPATH 외부에있는 작은 프로그램을 만들었습니다. 프로젝트를 패키지로 쉽게 나눌 수 있으므로 패키지를 사용하여 폴더 main
의 foo
패키지를 참조 할 수 있습니다.foo/
import "./foo"
내가 볼 수있는 한, 이것이 허용하지 않는 두 가지가 있습니다.
- 다른 코드는이 코드를 가져올 수 없습니다. 우리가 회사를 위해 특별히 서비스를 구축 할 때 이것은 문제가되지 않습니다.
go install
설치할 수 없습니다 . 이것도 문제가되지 않습니다. 빌드 파이프 라인은 도구를 설치합니다.
그러나 빌드 서버가 작업 공간을 GOPATH 내에 두지 않도록합니다.
그러한 접근은 권장되지 않습니까? 그렇다면 왜 그렇습니까?
내가 열거 한 두 가지 부작용 외에 다른 부작용이 있습니까?
이것은 공개 공개 소스 코드가 아닌 회사의 개인 프로젝트라는 점을 명심하십시오.
GOPATH에서 실제 프로젝트를 분리하는 것은 유혹적인 것처럼 보이지만 Shu 단계 에있을 때는 규칙을 위반할 때주의해야합니다.