go mod 命令
go mod init
模块名初始化go mod
,生成go.mod
文件,后可接参数指定module
名。
go mod download
手动触发下载依赖包到本地cache(默认为$GOPATH/pkg/mod
目录)
go mod graph
打印项目的模块依赖结构
go mod tidy
添加缺少的包,且删除无用的包
go mod verify
校验模块是否被篡改过
go mod why
查看为什么需要依赖
go mod vendor
导出项目所有依赖到vendor
下
go mod edit -fmt
参数格式化
go mod edit -require=golang.org/x/text
添加依赖
go mod edit -droprequire=golang.org/x/text
删除依赖
go list -m -json all
以json的方式打印依赖详情
go list -m -u all
来检查可以升级的package
go get -u need-upgrade-package
升级后会将新的依赖版本更新到go.mod
中
go get -u
升级所有依赖到最新的版本
go get package@verison
更新到指定版本
给项目添加依赖写进 go.mod
- 在项目中有import,然后go build就会go module自动下载并添加
- 自己手工使用go get下载安装后,会自动加入go.mod
go.mod 文件
module github.com/Ackites/KillWxapkg
go 1.23
require (
github.com/ditashi/jsbeautifier-go v0.0.0-20141206144643-2520a8026a9c
github.com/dop251/goja v0.0.0-20240806095544-3491d4a58fbe
github.com/fsnotify/fsnotify v1.7.0
github.com/tdewolff/parse/v2 v2.7.15
github.com/yosssi/gohtml v0.0.0-20201013000340-ee4748c638f4
golang.org/x/crypto v0.26.0
golang.org/x/net v0.28.0
golang.org/x/text v0.17.0
)
require (
github.com/dlclark/regexp2 v1.11.4
github.com/go-sourcemap/sourcemap v2.1.3+incompatible
github.com/google/pprof v0.0.0-20230207041349-798e818bf904
golang.org/x/sys v0.23.0
)
exclude(
golang.org/x/text v0.17.0
)
replace(
golang.org/x/text v0.17.0 => golang.org/x/text v0.18.0
)
- 第一项:当前项目的模块路径
- 第二项:项目使用的go版本
- 第三项:require项目所需的直接依赖包及其版本
- exclude:用于从使用中排除一个特定的模块版本
- replace:用于将一个包的版本替换为另一个包版本
- 其中require后的indirect说明这个依赖是非直接依赖
go.sum文件
github.com/ditashi/jsbeautifier-go v0.0.0-20141206144643-2520a8026a9c h1:+Zo5Ca9GH0RoeVZQKzFJcTLoAixx5s5Gq3pTIS+n354=
github.com/ditashi/jsbeautifier-go v0.0.0-20141206144643-2520a8026a9c/go.mod h1:HJGU9ULdREjOcVGZVPB5s6zYmHi1RxzT71l2wQyLmnE=
github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/dop251/goja v0.0.0-20240806095544-3491d4a58fbe h1:jwFJkgsdelB87ohlXaAGSd05Cb5ALDFa9iW9IGRHcRM=
github.com/dop251/goja v0.0.0-20240806095544-3491d4a58fbe/go.mod h1:DF+w/nLMIkvRpyhd/0K+Okbh3fVZBtXLwRtS/ccAa5w=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
- 每一行都是由模块路径,模块版本,哈希值组成
- 其中哈希值是用来保证当前缓存的模块不会被篡改
- hash是以h1:开头的字符串,表示生成checksum的算法是第一版的hash算法