go module 요약 > IT 기술백서

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

Go lang | go module 요약

본문

기존 Go 에서는 프로젝트마다 GOPATH 를 변경하고 실행해야 하는 (미친... 무슨 설계를 이렇게 함?) 불편함이 있었다.  그러나 Go 1.11 과 1.12 부터 의존성 관리 도구인 Go Module 이 탄생했다.  이제 또라이같은 GOPATH 변경으로부터 자유로워질 수 있다.

 

1. 새로운 모듈 만들기

$ go mod init [패키지명]

ex)

[code]

$ go mod init kr.hacktam/hello

[/code]

 

디렉토리에 go.mod 와 go.sum 이 생성된다.

go.mod 는 nodejs 의 package.json 과 비슷한 개념으로 패키지 정보, go버전, 의존모듈에 대한 정보를 담고 있다.

go.sum 은 history 와 같은 역할로 변경된 내역이 해시코드로 기록되어 있으면 이 코드로 비교하여 설치 및 제거 등의 의존성 관리를 한다. (우리는 신경안써도 된다.)

 

2. 의존성관리

go 코드에 import 가 되어 있으면 test, run, build 시에 자동으로 설치가 되며 go.mod 도 갱신된다.  버전이 명시되어 있지 않으면 가장 최신 latest 버전이 설치된다.

 

1) 현재 모듈과 의존성 목록 보기

[code]

$ go list -m all

[/code]

 

3. 모듈설치 및 업그레이드

[code]

$ go get [모듈패키지명]  // 버전 명시할때는 [모듈패키지명@v1.3.1] 과 같이 한다.

[/code]

 

4. 사용하지 않는 의존모듈 삭제하기

[code]

$ go mod tidy

[/code]

 

※ nodejs 의 node_modules 과 같이 의존파일들이 모듈디렉토리에 생기지 않고 GOPATH 에 생기는 것은 아마도 go 언어가 컴파일 언어이기 때문에 실행시에는 필요가 없어서 그런것 같다.  확실하지는 않다 

 

5. 디렉토리 관련

src, pkg, bin 이 이제 필요없다.

/main.go

/app/router.go

 

이런식으로 하면 된다.

main.go 에서 router.go 를 import 할때는 아래처럼 하면 된다.

[code]

import (

  myapp "[모듈패키지명]/app"

)

[/code]

댓글 0개

등록된 댓글이 없습니다.

Menu