늦었지만 dep 졸업 후 gomodule 데뷔

5313 단어 Gopackage

개요


go1.11부터 사용할 수 있는 gomodule를 사용해 보세요.
나는 GO111 MODULE=on이면 좋겠다고 생각했거나 거짓말이라고 생각해서 검증을 해봤다.

환경 확인


환경
항목
컨텐트
호스트
OS
mac
호스트
go version
go1.11.2 darwin/amd64
객석
OS
ubuntu
객석
go version
go1.11.3 linux/amd64
호스트는 자신의 Mac입니다.
게스트는 Docker에 ubuntu를 추가하고 새로운 go 환경을 추가했습니다.
호스트에 이미 다양한 패키지가 있기 때문에 내빈 측에서 호스트 측에서 쓴 코드를 실행할 때 gomodule의 동작을 확인해야 합니다.

사용할 코드


호스트에서 프로그램 실행


준비


호스트 측에 이미 사용된 외부 포장의 상태가 비교적 설명하기 쉽기 때문에 제가 평소에 자주 보살핌을 받는 pp에 가입해 주십시오.
$ go get github.com/k0kubun/pp
$ git clone https://github.com/bookun/module-test
$ cd module-test
$ cat main.go
main.go
package main

import "github.com/k0kubun/pp"

type person struct {
    name string
    age  int
}

func main() {
    p := person{name: "bookun", age: 5}
    pp.Println(p)
}

실행

$ go run main.go

# 出力
main.person{
  name: "bookun",
  age:  5,
}
색깔이 있어서 보기 쉬워요.

게스트에서 프로그램 실행


준비

$ cd module-test
$ make build
これで ゲスト側のプロンプト(#)が返ってくるはず
# git clone https://github.com/bookun/module-test
# cd module-test

실행


정상적으로 작동하면 pp가 없는 것처럼 오류가 발생할 수 있습니다
# go run main.go

出力
main.go:3:8: cannot find package "github.com/k0kubun/pp" in any of:
        /usr/local/go/src/github.com/k0kubun/pp (from $GOROOT)
        /root/go/src/github.com/k0kubun/pp (from $GOPATH)
예상대로
  • 환경 변수 열기 및 실행 시도GO111MODULE
  • $ GO111MODULE=on go run main.go
    go: creating new go.mod: module github.com/bookun/module-test
    go: finding github.com/k0kubun/pp v2.3.0+incompatible
    go: downloading github.com/k0kubun/pp v2.3.0+incompatible
    go: finding github.com/mattn/go-colorable v0.0.9
    go: downloading github.com/mattn/go-colorable v0.0.9
    go: finding github.com/mattn/go-isatty v0.0.4
    go: downloading github.com/mattn/go-isatty v0.0.4
    main.person{
      name: "bookun",
      age:  5,
    }
    
    대단해, 대단해!!!
    저희가 끝난 목록을 보여드릴게요.
    $ ls
    Dockerfile  Makefile  go.mod  go.sum  main.go
    
    go.modgo.sum 증가.
    한번 봅시다.
    go.mod
    module github.com/bookun/module-test
    
    require (
            github.com/k0kubun/pp v2.3.0+incompatible // indirect
            github.com/mattn/go-colorable v0.0.9 // indirect
            github.com/mattn/go-isatty v0.0.4 // indirect
    )
    
    pp와 가방에 의존하는 정보가 기재된 것 같습니다.

    보조 소프트웨어 패키지 추가 시도


    아무거나 가능하지만 손님 쪽에서 진행합니다.
    더해보세요echo.
    # export GO111MODULE=on
    # go get github.com/labstack/echo
    
    go: finding github.com/labstack/echo v3.3.5+incompatible
    go: downloading github.com/labstack/echo v3.3.5+incompatible
    go: finding github.com/labstack/gommon/color latest
    go: finding github.com/labstack/gommon/log latest
    go: finding golang.org/x/crypto/acme/autocert latest
    go: finding github.com/labstack/gommon v0.2.8
    go: downloading github.com/labstack/gommon v0.2.8
    go: finding golang.org/x/crypto/acme latest
    go: finding golang.org/x/crypto latest
    go: downloading golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9
    go: finding github.com/valyala/fasttemplate latest
    go: downloading github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4
    go: finding github.com/valyala/bytebufferpool v1.0.0
    go: downloading github.com/valyala/bytebufferpool v1.0.0
    
    대단해, 대단해!!!
    다시mod 봐봐.
    go.mod
    
    module github.com/bookun/module-test
    
    require (
            github.com/k0kubun/pp v2.3.0+incompatible // indirect
            github.com/labstack/echo v3.3.5+incompatible // indirect
            github.com/labstack/gommon v0.2.8 // indirect
            github.com/mattn/go-colorable v0.0.9 // indirect
            github.com/mattn/go-isatty v0.0.4 // indirect
            github.com/valyala/bytebufferpool v1.0.0 // indirect
            github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 // indirect
            golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 // indirect
    )
    
    완전히 의존하는 가방 추가

    총결산


    go1.11 이상 GO111 MODULE=on이면
  • 첫 운행 시 부족한 가방이 있으면 추가
  • 개발 중인 goget이 사용하고 싶은 패키지만 업데이트하면 의존 패키지 일람
  • 뒷수습


    컨테이너 삭제 및 이미지 삭제
    $ make rm
    $ make rmi
    

    좋은 웹페이지 즐겨찾기