似乎godoc工具不了解Go modules

一个简单的godoc -goroot=.服务于项目文件,但它不会生成软件包的文档。我从项目源目录进行了测试,该目录还存储了go.modgo.sum模块文件。

如何为$GOPATH之外的Go模块内的所有软件包生成文档?

release notes of Go 1.12中写道,godoc工具将不包含在以后的Go版本中,并且只能在Go 1.12之后通过go get使用。一个应该使用Go go doc command。但是,go doc不会生成“很容易阅读”的HTML页面。 从Go源代码生成HTML或Markdown的文档生成方法是否有替代方法?

最佳答案

问题不在于模块,而不仅仅是GOPATH。 github问题线程对此进行了详细讨论:https://github.com/golang/go/issues/26827

该线程已经发展出一种解决方法,该方法使用docker容器运行将GOPATH设置为开发树基础的godoc服务器。该godoc服务器将为您的开发树中的所有软件包提供文档,无论它们是否具有go.mod。

这是我今天上午刚刚在该线程中发布的变通方法的一个版本-修改$ devbase(或将其作为$ 1传递)以指向树的基部:

#!/bin/bash

set -x  # optional

devbase=$HOME/gohack
port=6060

docker run \
    --rm \
    -e "GOPATH=/tmp/go" \
    -p 127.0.0.1:$port:$port \
    -v $devbase:/tmp/go/src/ \
    --name godoc \
    golang \
    bash -c "go get golang.org/x/tools/cmd/godoc && echo http://localhost:$port/pkg/ && /tmp/go/bin/godoc -http=:$port"

您会注意到,我还使用了gohack工具-它为您管理go.mod中的“替换”行,因此,即使尚未将模块推送到服务器,导入也可以找到您的模块的本地版本。否则$ devbase没什么特别的-例如,将其指向$ HOME/src应该也可以正常工作。

关于go - 如何使用godoc和go模块一起提供文档?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54933983/

10-12 04:58