Go Module 이란
- 패키지의 모음으로써, 한 개의 모듈은 다수의 패키지를 포함할 수 있다.
- 모듈을 통해 Golang은 패키지들의 종속성을 관리할 수 있으며, 모듈은 패키지 관리 시스템으로써 활용된다.
- 모듈을 패키지를 트리 형식으로 관리하며, 루트(root) 폴터에 go.mod 파일을 생성하여 모듈을 정의하고, 종속성 정보를 관리하게 된다.
- go.mod는 네 가지 키워드를 사용한다. (module, require, replace, exclude)
module
- 모듈 경로를 저장한다
- 소스코드에서 패키지를 가져올 때, 절대 경로를 사용할 필요 없이 module에 선언되어있는 경로를 사용하면 된다.
require
- 빌드시 필요한 종속성 정보를 저장
- 모듈을 사용하여 빌드하면 자동으로 필요한 패키지를 다운로드 및 설치하고 require에 패키지 경로와 버전 정보가 추가된다
replace
- 모듈의 특정 버전이나, 버전 전체를 대체할 때 사용한다.
- require에 의해 설정된 종속성을 => 를 통해 우측에 설정된 패키지 버전으로 대체시킨다.
exclude
- 패키지의 특정 버전을 사용하지 않도록 할 때 사용한다.
go mod tidy
- 소스 코드를 확인해서 import 되지 않는 모듈들을 자동으로 go.mod 파일에서 삭제하고 import 되었지만 실제 모듈이 다운안된 경우는 go.mod 파일에 추가해준다.
go mod vendor
- module은 프로젝트 밑에 저장되지 않고 GOPATH에 저장된다.
- 그러나 자신이 사용하는 모듈들을 자신의 repo 아래 vendor 폴더에 복사하고 싶을 때 사용한다.
go mod download
- 명령된 모듈을 module cache에 다운로드한다.