乐趣区

go module使用本地包

go module 的使用非常简单

初始化 go.mod
go mod init

整理依赖包
go mod tidy

如果想缓存到 vendor 目录
go mod vendor

执行命令之后都会自动把依赖搞定. 但是, 如果我们是本地开发的包, 还没有远程仓库的时候, 要怎么解决本地包依赖问题呢?
使用 replace 将远程包替换为本地包服务
幸运的是, go module 提供了另外一个方案, replace, 这个 replace 怎么使用的呢? 我们先看一下一个最基本的 mod 文件
module GoRoomDemo

go 1.12

require (
github.com/gin-gonic/gin v1.3.0
github.com/gohouse/goroom v0.0.0-20190327052827-9ab674039336
github.com/golang/protobuf v1.3.1 // indirect
github.com/gomodule/redigo v2.0.0+incompatible
github.com/mattn/go-sqlite3 v1.10.0
github.com/stretchr/testify v1.3.0 // indirect
golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53 // indirect
)
这是一个简单的 GoRoom 框架的依赖关系包, 如果我想使用本地的 goroom, 只需要使用 replace 即可
module GoRoomDemo

go 1.12

require (
github.com/gin-gonic/gin v1.3.0
github.com/gohouse/goroom v0.0.0-20190327052827-9ab674039336
github.com/golang/protobuf v1.3.1 // indirect
github.com/gomodule/redigo v2.0.0+incompatible
github.com/mattn/go-sqlite3 v1.10.0
github.com/stretchr/testify v1.3.0 // indirect
golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53 // indirect
)

replace github.com/gohouse/goroom => /path/to/go/src/github.com/gohouse/goroom

这里的 path/to/go/src/github.com/gohouse/goroom 是本地的包路径
这样, 我们就可以愉快的使用本地目录了

退出移动版