Go Package Mapping
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
John Olheiser 932d05f5ab Add CI config (#1) 4 月之前
cmd Change import paths 4 月之前
modules Change import paths 4 月之前
.gitignore Initial commit 4 月之前
.golangci.yml Add CI config (#1) 4 月之前
Makefile Change import paths 4 月之前
README.md Add server 4 月之前
go.mod Change import paths 4 月之前
go.sum Change import paths 4 月之前
main.go Change import paths 4 月之前



Go Package Mapping


I personally use a lot of nice libraries in Go, but every time I start a new project I have to go hunting for import paths again!

Enter GPM, a glorified mapping of simple names to go-get imports.

For example, I use urfave/cli for all of my CLI projects. I've used it enough times to remember the import path, but let's say I didn't.
Using either a GPM server or local config, I can instead gpm get cli which finds cli in my map and runs go get github.com/urfave/cli/v2.


  • add - Add a local package
  • remove - Remove a local package
  • list - List local packages
  • config - Change local configuration
  • export - Export local packages to JSON
  • import - Import JSON to local packages. Either give a path to a .json file, or a URL to a GPM server export endpoint
    • e.g. https://gpm.jolheiser.com/export
  • get - Get a list of packages
    • e.g. gpm get beaver survey toml homedir cli to get all the modules needed for gpm itself (assuming the map resolves to the same packages)
  • server - Start a gpm server


If GPM doesn't find a package locally, it can call out to a configurable gpm server to find a package there instead.
This makes it much simpler to have a central library of packages rather than exporting and importing between environments.

Want to run your own server? It's very easy! This CLI comes packaged with the server inside, simply run gpm server to start up a GPM server.
Put it behind your favorite reverse proxy and it's ready to go!