你写了一个Go库,放到github.com上,但是你不想别人用import "github.com/{user}/{proj}
这样的方式,
比如你想import "example.com/pkg1"
为什么需要自定义import路径
Go Module的流行
Go 1.13已经默认开启Go Module模式,随着Go Module支持的逐渐完善,Go Module会成为主流的开发方式
import 路径使用github.com的仓库,本身是一种去中心化的设计,但是我们希望自定义这个import路径原因有二
- 当github不可用的时候,你不能要求别人replace
- 我希望自己控制最终的源码仓库托管在哪里;
如何实现自定义import路径
申请自有域名
首先,需要申请一个自有域名,如devpkg.work
则其它项目要引用simplemod的代码,需要这样import
import "devpkg.work/simplemod
创建一个module
go mod init devpkg.work/simplemod
git push
配置静态web服务
使用动态web服务的配置会简单一点,只需要配置一下nginx服务器即可,但动态web服务始终要购买云服务,长年累月下来也是一笔不可忽视的费用。
借助Github Page 静态网站托管,
再配合netlify提供的重定向功能,可以做一个白嫖版本的go import域名跳转
步骤如下:
- 创建一个github repo
- 创建一个netlify app,并绑定此github repo
- 把自有域名绑定到netlify app上
- 在github repo上提交go import的html,并编写
_redirects
里的跳转规则
使用此module
初始化一个exmple,并调用simplemod的代码
mkdir example && cd example && go mod init example
go get -u -v devpkg.work/simplemod