似乎godoc
工具不了解Go modules。
一个简单的godoc -goroot=.
服务于项目文件,但它不会生成软件包的文档。我从项目源目录进行了测试,该目录还存储了go.mod
和go.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/