问题
I'm currently using Dep and would like to start using Go modules.
How do I migrate?
回答1:
Migrating from Dep to Go Modules is very easy.
- Run
go versionand make sure you're using version 11 or later. - Move your code outside of GOPATH or set
export GO111MODULE=on. go mod init [module path]: This will import dependencies from Gopkg.lock.go mod tidy: This will remove unnecessary imports, and add indirect ones.rm -rf vendor/: Optional step to delete your vendor folder.go build: Do a test build to see if it works.rm -f Gopkg.lock Gopkg.toml: Delete the obsolete files used for Dep.
Go has imported my dependencies from Dep by reading the Gopkg.lock file and also created a go.mod file.
If you want to keep your vendor folder:
- Run
go mod vendorto copy your dependencies into the vendor folder. - Run
go build -mod=vendorto ensurego builduses your vendor folder.
回答2:
To add to @Nicholas answer's:
Here is from the offical golang documenation:
To create a go.mod for an existing project:
- Navigate to the root of the module's source tree outside of GOPATH:
$ export GO111MODULE=on # manually active module mode
$ cd $GOPATH/src/<project path> # e.g., cd $GOPATH/src/you/hello
- Create the initial module definition and write it to the go.mod file:
$ go mod init
This step converts from any existing dep Gopkg.lock file or from any of the other nine total supported dependency formats, adding require statements to match the existing configuration.
- Build the module. When executed from the root directory of a module, the ./... pattern matches all the packages within the current module. go build will automatically add missing or unconverted dependencies as needed to satisfy imports for this particular build invocation:
$ go build ./...
- Test the module as configured to ensure that it works with the selected versions:
$ go test ./...
(Optional) Run the tests for your module plus the tests for all direct and indirect dependencies to check for incompatibilities:
$ go test all
回答3:
Another way to upgrade to modules.
Remove the Gopkg.toml and Gopkg.lock
rm Gopkg.*Initialise the Go modules
GO111MODULE=on go mod initRun go mod tidy to pull all the indirect modules and remove unused modules
GO111MODULE=on go mod tidyRun build to ensure everything works fine
go build
Tip in case you face few modules not found then manually update the modules tag in go.mod file.
来源:https://stackoverflow.com/questions/55664630/how-do-i-migrate-from-dep-to-go-modules