Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';Go(mod)与npm的等价物过时了吗?_Go_Go Modules - Fatal编程技术网

什么';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
    以使用最新的修补程序版本
您可以在此处阅读更多详细信息:

还有一个第三方应用程序::

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

仅列出直接依赖项 如果您对间接依赖项不感兴趣,我们可以将其过滤掉。没有用于过滤间接依赖项的标志,但我们可以使用自定义输出格式来过滤间接依赖项

-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中过时的卢萨雷斯一样,这也是很容易做到的。请参阅更新的答案。