-
Notifications
You must be signed in to change notification settings - Fork 542
Go Package Manager Comparison
Jonathan Hall edited this page Aug 12, 2017
·
7 revisions
There are numerous package dependency managers in the Go ecosystem. How do you choose the one to use? How do they compare?
This table looks at features across several of the popular ones to see how they compare.
Glide | GB | Godep | Govendor | |
---|---|---|---|---|
Semantic Versions | ✓ | ✓ | ✕ | ✓ |
Semantic Version Ranges | ✓ | ✕ | ✕ | ✕ |
Resolves dependency trees including versions | ✓ | ✕ | ✕ | ✕ |
Uses common range syntax (similar to PHP, JavaScript, etc) | ✓ | ✕ | ✕ | ✕ |
Tries to import from other package managers | ✓ | ✕ | ✕ | ✕ |
Copies from the GOPATH
|
✕* | ✕ | ✓ | ✓ |
Works with the go toolchain |
✓ | ✕ | ✓ | ✓ |
Locks for reproducible builds | ✓ | ✓ | ✓ | ✓ |
Allows package/version checked into VCS or installed on demand | ✓ | ✓ | ✕ | ✓ |
Aliased repos (e.g., using forks) | ✓ | ✕ | ✕ | ✓ |
Plugin extensibility model | ✓ | ✓ | ✕ | ✕ |
Supports deleting unused repos for cleanup (opt-in) | ✓ | ✕ | ✕ | ✓ |
* Glide keeps the imports separate from the GOPATH
so there's no accidental changes there that could cascade into applications using the package.
Obvious disclosure, this is on the Glide project so take that into account.
Note, if there is something inaccurate in this table let's fix it. The goal is to be accurate, mistakes happen, and projects add features.