栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么是npm过时的Go(mod)等效项?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是npm过时的Go(mod)等效项?

列出直接和间接依赖

Go 1.11模块:如何升级和降级依赖项 Wiki中对此进行了详细说明:

要查看所有直接和间接依赖项的可用次要和补丁升级,请运行

go list -u -m all

要将当前模块的所有直接和间接依赖关系升级到最新版本,请执行以下操作:

  • 运行
    go get -u
    以使用最新的次要版本或修补程序版本
  • 运行
    go get -u=patch
    以使用最新的修补程序版本

您可以在此处阅读更多详细信息:命令转到:列出软件包或模块。

还有一个第三方应用程序:https :
//github.com/psampaz/go-mod-outdated:

查找Go项目过时依赖项的简单方法。go-mod-outdated提供了go list -u -m -json
all命令的表格视图,该命令列出了Go项目的所有依赖关系及其可用的次要和补丁更新。它还提供了一种过滤间接依赖关系和无需更新的依赖关系的方法。

仅列出直接依赖项

如果您对间接依赖项不感兴趣,我们可以将其过滤掉。没有用于过滤间接依赖关系的标志,但是我们可以使用自定义输出格式来做到这一点。

-f
标志使用包模板的语法为列表指定备用格式。

因此,您可以指定格式为模板文档,并遵循

text/template

列出模块时,该

-f
标志仍然指定应用于Go结构的格式模板,但现在指定为
Module
结构:

>     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>     }

注意:此

Module
结构是在go命令的内部软件包中定义的:https
:
//godoc.org/cmd/go/internal/modinfo

因此,例如,像以前一样列出直接和间接依赖关系,但现在也可以

IAMINDIRECT
在间接依赖关系后面附加一个单词,可以这样完成:

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上使用。

仅列出具有更新的依赖项

同样,我们如何过滤掉间接依赖关系,这也是“小菜一碟”,因为该

Module
结构包含一个
Update
具有更新的包/模块的字段:

go list -u -m -f '{{if .Update}}{{.}}{{end}}' all


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号