DEV Community


Posted on

Intro to Modules on Go - Part 2

In the previous post we saw how to init modules, write one, publish it (locally with replace directive) & use it on another Go project / module. This part we are going to publish the module to github and get rid of replace way of aliasing.

Publishing to Github

Publshing to github is a no-brainer just init a git repo and push it to github. However the name of the repo does matters here since the consumers of our module would use that as the identifier.

Lets change the go.mod file on localmod1. So that it points to a proper git repo than just a name.


go 1.12
Enter fullscreen mode Exit fullscreen mode

now lets push it to github.

git init . 
git remote add origin
git cm 'initial commit' 
git push origin master
Enter fullscreen mode Exit fullscreen mode

Now the module is published to github. Lets proceed further to use it on other modules.

Using in other modules

This step does not require any coding but we just need to edit go.mod file. Lets open usingmod1 module's
go.mod file.

module usingmod1

replace => ../localmod1

go 1.12

require v0.0.0-00010101000000-00000000
0000 // indirect
Enter fullscreen mode Exit fullscreen mode

in the above we just need to replace the 2nd line with the following and updated version should look like below.

module usingmod1
require v1.0.2
go 1.12
Enter fullscreen mode Exit fullscreen mode

now if we run go mod tidy. we can see its downloading the artifact with the version as we desired.

> go mod tidy
go: finding v1.0.2
go: downloading v1.0.2
go: extracting v1.0.2
Enter fullscreen mode Exit fullscreen mode


  • Across this excercise we never used go get command or had any vendor folder to manage our dependenceis.
  • Modules were written outside the GOPATH.

Thats all folks .... I think I had covered the extent I know about Go Modules.

Top comments (0)