什么';Go(mod)与npm的等价物过时了吗?
我想让我的什么';Go(mod)与npm的等价物过时了吗?,go,go-modules,Go,Go Modules,我想让我的go.mod依赖项保持最新。使用Node.js,我运行npm-outleted(以及以后的npm-update) Go mod的最接近值是多少 理想情况下,我会看到一份关于我的项目的过时依赖项的报告(并非全部是递归的)。感谢列出直接和间接依赖项 这在wiki中有详细说明: 要查看所有直接和间接依赖项的可用次要和修补程序升级,请运行go list-u-m all 要将当前模块的所有直接依赖项和间接依赖项升级到最新版本,请执行以下操作: 运行go get-u以使用最新的次要版本或修补程序
go.mod
依赖项保持最新。使用Node.js,我运行npm-outleted
(以及以后的npm-update
)
Go mod的最接近值是多少
理想情况下,我会看到一份关于我的项目的过时依赖项的报告(并非全部是递归的)。感谢列出直接和间接依赖项
这在wiki中有详细说明:
要查看所有直接和间接依赖项的可用次要和修补程序升级,请运行go list-u-m all
要将当前模块的所有直接依赖项和间接依赖项升级到最新版本,请执行以下操作:
- 运行
以使用最新的次要版本或修补程序版本go get-u
- 运行
以使用最新的修补程序版本go-get-u=patch
-f
标志使用包模板的语法指定列表的替代格式
因此,您可以将格式指定为模板文档,并符合
列出模块时,-f
标志仍然指定应用于Go结构的格式模板,但现在是模块
结构:
type Module struct {
Path string // module path
Version string // module version
Versions []string // available module versions (with -versions)
Replace *Module // replaced by this module
Time *time.Time // time version was created
Update *Module // available update, if any (with -u)
Main bool // is this the main module?
Indirect bool // is this module only an indirect dependency of main module?
Dir string // directory holding files for this module, if any
GoMod string // path to go.mod file for this module, if any
Error *ModuleError // error loading module
}
type ModuleError struct {
Err string // the error itself
}
注意:此模块
结构在go命令的内部包中定义:
例如,要像以前一样列出直接依赖项和间接依赖项,但现在还要在间接依赖项之后附加一个iamlindirect
单词,可以使用以下方法完成:
go list -u -m -f '{{.}}{{if .Indirect}} IAMINDIRECT{{end}}' all
否定逻辑,列出直接依赖项和间接依赖项,但这次仅用IAMDIRECT
标记直接依赖项:
go list -u -m -f '{{.}}{{if not .Indirect}} IAMDIRECT{{end}}' all
我们就快到了。我们现在只需过滤掉不包含IAMDIRECT
单词的行:
go list -u -m -f '{{.}}{{if not .Indirect}} IAMDIRECT{{end}}' all | grep IAMDIRECT
可供替代的
上述解决方案基于grep
命令。但事实上我们不需要这样。如果指定的模板生成空文档,则将从输出中跳过该行
因此,我们可以这样实现:
go list -u -m -f '{{if not .Indirect}}{{.}}{{end}}' all
基本上,如果不是间接的,我们只调用Module.String()
(我们只包含依赖项)。作为额外的好处,这个解决方案也适用于Windows
仅列出具有更新的依赖项
与我们过滤间接依赖项的方式类似,这也是“小菜一碟”,因为模块
结构包含有更新的包/模块的更新
字段:
go list -u -m -f '{{if .Update}}{{.}}{{end}}' all
另请参阅相关问题:问题在于它递归地列出所有依赖项。我只需要知道第一级的;我在
go.mod
中提到的那些模块的依赖性不是模块的依赖性吗?这是间接的,但仍然如此。@LuísSoares请参阅编辑后的答案,以筛选出间接依赖项。太好了!如果我只想过滤那些过时的呢?就像npm中过时的卢萨雷斯一样,这也是很容易做到的。请参阅更新的答案。