Understanding Vendor in Go 1.6
With Go 1.6, vendoring is integrated into the core workflow. When building, running, or installing projects that use external dependencies, Go will prioritize packages found in the ./vendor directory. If packages are not found there, it will fall back to the standard $GOPATH/src directory.
Using Vendor
To use vendor, simply copy the necessary external packages from your $GOPATH/src directory to the ./vendor directory within your project's root folder. For example:
Dependency Management Tools
While it's possible to manually copy packages into the ./vendor directory, it can be more convenient to use a dependency management tool. Two popular options are:
These tools automate the process of finding, copying, and managing external packages within the ./vendor directory.
Selective Vendoring
In addition to using vendor for complete dependency locking, it can also be used selectively to lock only specific packages that may cause issues with updates. This allows you to lock down specific versions of misbehaving packages while ensuring that the rest of your dependencies receive the latest updates.
When Overuse Occurs
It's important to note that over-reliance on dependency management tools can lead to unnecessary locking. While locking dependencies is essential for ensuring stability in production, it's advisable to use vendor selectively and consider the impact on consumers.
For example, selectively vendoring only the problematic package, while continuing to use go get -u ./... for the rest of your dependencies, allows you to maintain up-to-date versions and bug fixes while still controlling specific dependencies that may cause issues.
The above is the detailed content of How Does Go 1.6's Vendor Mechanism Manage External Dependencies?. For more information, please follow other related articles on the PHP Chinese website!