[Golang] go modules 사용

govendor (deprecated)

Golang을 처음 접하고 체인코드를 개발할때부터 시간에 쫓겨 의존성 라이브러리 관리를 govendor를 통해 했었음

Go modules

이제는 1.11부터 Go modules가 도입되면서 govendor 개발자도 1.14부터는 Go modules를 사용하도록 권장하고있음

사실상 govendor는 deprecated 되어 앞으로는 사용하지 않을 것임

go mod init [module-name]

새 모듈을 만들었을때 go mod init 명령어로 go.mod 파일 작성

1
go mod init github.com/dev-sawd/

go get [module-name]

종속성 모듈을 다운로드

1
go get github.com/dev-sawd/

go mod tidy

사용되지 않는 종속성 모듈을 제거하거나 추가된 종속성 모듈을 go.mod에 추가

1
go mod tidy

go mod vendor

해당 위치에 종속성 모듈을 vendor 폴더안에 복사

1
go mod vendor

프로젝트를 새로 만들었을 경우는 go mod init를 이용해 go.mod를 생성하고 작업하면서 필요한 모듈들을 정리해가며 개발

만약 github에 공유된 모듈들을 받아 직접 실행하는 경우는 go.mod파일이 이미 존재하기 때문에 go get을 이용해 해당 모듈에서 사용하고 있는 모듈들을 다운받아 실행하면 됨

go get등을 이용해 github에 공유되어있는 모듈들을 다운로드 받을 수 없는 경우에는 go mod vendor를 이용해 해당 모듈들을 현재 개발중인 모듈 폴더의 vendor에 복사하게 한 후

모듈 전체를 배포하는 형태로 진행해야함