0

I have built a small application locally in golang. My directory structure is as follows.

gocode/
      src/
          github.com/
                    travel/
                          config/
                          server/
                          routes/
                          main.go

      pkg/
          linux/
               github.com/
                    // projects with .a extension 
               golang.org/
                         x/net/
                         x/oauth2
      bin/

I went through a lot of documentations, which states to push only /src folder to github as best practice.

I am confused with what happens with packages like golang.org/x/net which are not inside /src directory.

So we need to run go import "net/http" in production server as well and create executable binaries.

I've come from a nodejs background so is it something like we do "npm install" in nodejs.But the thing is we have a package.json file in case of node. Anyways please help me with this confusion.

Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
sac dh22
  • 45
  • 6
  • What you're looking for is dependency management. Check out go dep, glide, and govendor. – Jack Bracken May 28 '18 at 10:09
  • 1
    Possible duplicate of [Golang Dependency Management Best Practice](https://stackoverflow.com/questions/30300279/golang-dependency-management-best-practice) – Jonathan Hall May 28 '18 at 10:30

1 Answers1

1

You would only push the contents of the src/github.com/travel directory. go get handles dependency resolution for you when someone wants to download your package. Take a look at something like logrus. Running go get github.com/sirupsen/logrus will download all dependencies needed to build the package. This includes any of your golang.org/x/ packages.

ollien
  • 4,418
  • 9
  • 35
  • 58