I am using go modules on go1.12 to handle my Go dependencies. Is it best practice to also commit the vendor/
directory into version control?
This is somewhat related to Is it best-practice to commit the `vendor` directory? which asks this question in the case of using dep
. With dep
, commiting vendor/
is the only way to get truly reproducible builds. What about for go modules?
Unless you need to modify the vendored packages, you shouldn't. Go modules already gives you reproducible builds as the go.mod
file records the exact versions and commit hashes of your dependencies, which the go
tool will respect and follow.
The vendor
directory can be recreated by running the go mod vendor
command, and it's even ignored by default by go build
unless you ask it to use it with the -mod=vendor
flag.
Read more details:
Go wiki: How do I use vendoring with modules? Is vendoring going away?
Command go: Modules and vendoring
Command go: Make vendored copies of dependencies
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With