Я хочу локально посмотреть, как будет выглядеть документация моего пакета. То есть я хочу видеть то же самое, что вы видите на godoc.org, но локально.
У меня есть простая папка примера локально, но я не могу заставить ее работать. Он корректно выводит текстовую документацию:
~/code/go/gonotes (master) $ godoc .
PACKAGE DOCUMENTATION
package gonotes
import "."
FUNCTIONS
func Blah()
Here is header
Blah is function being use to test:
- go documentation
- blah like things
It is nice
Но если я запущу godoc -http=:6060
и перейду к http://localhost:6060/
, я увижу практически тот же контент, что и на домашней странице golang.com. http://localhost:6060/gonotes
дисплеи
lstat $GOROOT/gonotes: no such file or directory
Я неправильно понимаю, как работает -http
? Есть ли способ локально просмотреть http-версию моих документов?
Я смог заставить его появиться, скопировав файлы в src/gonotes
и запустив:
GOPATH=/Users/jonah/code/go/gonotes godoc -http=:6060
чтобы актуальные файлы были доступны по адресу /Users/jonah/code/go/gonotes/src/gonotes
.
Побочным эффектом этого является не отображение каких-либо библиотек третьей части, установленных по умолчанию GOPATH
, поэтому я все же хотел бы найти решение, которое просто позволяет мне добавить текущий каталог, как есть, без добавления src/curdir
к нему, и все равно появится.
@icza Спасибо. Я попробовал http://localhost:6060/pkg/gonotes
и получил cannot find package "." in: /src/gonotes
. Нужно ли помещать мои исходные файлы под src
? В настоящее время они просто находятся в папке gonotes
, как вы можете видеть из сеанса терминала, который я включил в ОП.
Чтобы это сработало, ваш gonotes
пакет должен быть внутри GOPATH/src/gonotes
.
Вы не можете просто поместить свой код Go в произвольные папки. Вы должны следовать соглашению GOPATH
, подробнее см. Как написать код Go.
@icza разве не в этом весь смысл использования модулей go? так ты не привязан к GOPATH?
Не весь смысл, но да, если вы используете модули, вам не нужно использовать GOPATH
(хотя раньше вы не упоминали модули). Но тогда зачем вы ставите GOPATH
? GOPATH
и модули взаимоисключающий, см. Go Modules не распознает файлы в GOPATH. Инструмент godoc
не поддерживает модули, и он устарел, поэтому на данный момент, если вы хотите видеть свои документы пакета локально в godoc
, вам нужно прибегнуть к размещению их исходных кодов в папке src
.
Этот комментарий - ответ на мой вопрос. Не стесняйтесь добавлять в качестве правильного ответа.
GOPATH
godoc -http
будет обслуживать документы всех доступных пакетов, включая стандартную библиотеку. Не беспокойтесь, среди них есть и ваши пакеты, просто посмотрите еще раз. В качестве ярлыка просто введите http://localhost:6060/pkg/your/package
.
GOPATH
и модули взаимоисключающий, см. Go Modules не распознает файлы в GOPATH. Инструмент godoc
не поддерживает модули, и он устарел (см. предупреждение об устаревании), поэтому на данный момент, если вы хотите видеть свои пакетные документы модулей локально в godoc
, вам нужно прибегнуть к размещению их исходных кодов в папке src
.
«Обходной путь» для просмотра документов модулей:
Поместите репо в папку, например /some/folder/src
Начать годоки с godoc -goroot=/some/folder -http=:6060
См. соответствующую проблему: поддержка модулей Go
Также групповое обсуждение: Является ли инструмент godoc версии 1.11 «модульным»?
godoc -http
будет обслуживать документы всех доступных пакетов, включая стандартную библиотеку. Не беспокойтесь, среди них есть и ваши пакеты, просто посмотрите еще раз. В качестве ярлыка просто введитеhttp://localhost:6060/pkg/your/package
.