go-module相关


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 // indirect
	github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect
	github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect
	golang.org/x/sys v0.23.0 // indirect
)

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算法

  目录