Node.js的依赖管理
在前端,我们通常使用npm管理依赖。
npm initpackage.jsonnpm install axiosaxiospackage.json{
"name": "module",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.21.1"
}
}
package.jsonpackage-lock.jsonnpm installnpm"dependencies": {
"axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"requires": {
"follow-redirects": "^1.10.0"
}
},
"follow-redirects": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
"integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg=="
}
}
axiosfollow-redirectsnode_modules
Golang的依赖管理
Golang的依赖管理方案经历了一个曲折的过程。
GOPATH: 把所有的项目文件和依赖全部放在一个目录里,不同项目没办法使用不同版本的依赖,所以有了GOVENDOR。
GOVENDOR: 每个项目有自己的vendor目录,项目优先到vendor目录查找依赖,其次到GOPATH目录查找。
目前最新的Golang依赖管理是使用Go Modules。
go mod init go mod initnpm initgo get go getnpm install$ go mod init github.com/noodanee/go-modules
go: creating new go.mod: module go-modules
$ go get github.com/go-resty/resty/v2
go get: added github.com/go-resty/resty/v2 v2.6.0
$ ls
go.mod go.sum
github.com/noodanee/go-modulesgithub.com/go-resty/resty/v2go.modgo.summodule github.com/noodanee/go-modules
go 1.16
require github.com/go-resty/resty/v2 v2.6.0 // indirect
go.modgo.modpackage.jsongithub.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4=
github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
go.sumpackage-lock.jsonh1:开头的字符串,表示生成checksum的算法是第一版的hash算法,即sha256。
Node.jsnode_modulesGOMODCACHEGOMODCACHEgo envGOMODCACHEcdGOMODCACHE$ ls
cache github.com golang.org google.golang.org
cdgithub.com/go-resty/resty$ cd github.com/go-resty/resty
$ ls
v2@v2.6.0
@总结
Node.jsGolangNode.jsGolangNode.jsnode_modulesGolang看到这里,我相信你对Golang的依赖管理已经有了一个基本的认识。
欢迎关注我的公众号“野生程序员的修炼”,原创技术文章第一时间推送。