[TOC]
docs
go mod
migrations: enable go modules
主要有以下两种方式:
- GO111MODULE=on
- 把工程移出$GOPATH/src
- 创建go.mod 文件: go mod init github.com/cdz620/xxx
- 编译:go build
- vendor —> mod: go mod -vendor 复制vendor下的目录到$GOPATH/pkg/mod
common operations
- init:
go mod init github.com/cdz620/tutorial
- add a dependency:
- 代码中直接引用, 编译时自动下载
go get github.com/gorilla/mux@latest
go mod -require='bitbucket.org/bigwhite/c@>=v1.1.0'
- upgrade a dependency:
-
go get github.com/gorilla/mux@latest
拉取最新的release版本 -
go get github.com/gorilla/mux@master
拉取最新的master的代码,不一定是就不是人release版本,与上个命令不同 -
-u:
会更新依赖的子模块go get -u
go get -u=patch xxx
-
- delete unused dependencies:
go mod tidy
- replace
- 场景:将远方的包克隆到本地 ,修改并测试程序运行,可以通过添加replace,不修改import path。可结合gohack一起使用。
replace example.com/some/dependency => example.com/some/dependency v1.2.3
release modules (v2 or higher)
using with vendor
-
go mod vendor
: 会在当前目录下创建vendor目录,给老版本的go提供兼容性 -
go build -mod=vendor:
编译时指定使用vendor目录的依赖
four directives in go.mod
- module
- require
- replace: can only be uesd in main module
- exclude: can only be uesd in main module
module query
go mod -require='bitbucket.org/bigwhite/c@>=v1.1.0'
go get github.com/gorilla/mux@latest
build list
go list -m all
go list -m -json all
go list -m -versions golang.org/x/text
go build with modules
-
go build -mod=vendor main.go
前提是当前的仓库目录在$GOPATH/src下
有疑问加站长微信联系(非本文作者)