Подтвердить что ты не робот

Документирование проектов Node.js

В настоящее время я использую JSDoc Toolkit для документирования моего кода, но он не совсем подходит - а именно, он, похоже, пытается описать пространства имен правильно. Скажем, у вас есть два простых класса в каждом из своих файлов:

lib/database/foo.js:

/** @class */
function Foo(...) {...}

/** @function ... */
Foo.prototype.init(..., cb) { return cb(null, ...); };

module.exports = foo;

А потом что-то унаследовало lib/database/bar.js:

var Foo = require('./foo');

/**
 * @class
 * @augments Foo
 */
function Bar(....) {...}

util.inherits(Bar, Foo);

Bar.prototype.moreInit(..., cb) { return cb(null, ...); };

В сгенерированной документации это выводится просто как Foo и Bar, без ведущего database (или lib.database), что совершенно необходимо, если у вас нет всего в глобальной области.

Я пробовал бросать на него @namespace database и @name database.Foo, но это не получается приятно.

Любые идеи для того, чтобы сделать JSDoc вывод более подходящим, или какой-то совершенно другой инструмент, который лучше работает с Node.js? (Я ненадолго взглянул на Natural Docs, JSDuck и залез на несколько других, которые выглядели довольно устаревшими...)

4b9b3361

Ответ 1

ПРИМЕЧАНИЕ: Dox больше не выводит HTML, а blob JSON, описывающий проанализированный код. Это означает, что код ниже не работает ужасно хорошо...

В итоге мы использовали Dox. Это очень похоже на docco, о котором упоминает Raynos, но он все это в одном битном HTML файле для вывода.

Мы взломали это в наш makefile s:

JS_FILES := $(shell find lib/ -type f -name \*.js | grep -v 3rdparty)

#Add node_modules/*/bin/ to path:
#Ugly 'subst' hack: Check the Make Manual section 8.1 - Function Call Syntax
NPM_BINS:=$(subst bin node,bin:node,$(shell find node_modules/ -name bin -type d))
ifneq ($(NPM_BINS),) 
    PATH:=${NPM_BINS}:${PATH}
endif

.PHONY: doc lint test

doc: doc/index.html

doc/index.html: $(JS_FILES)
    @mkdir -p doc
    dox --title "Project Name" $^ > [email protected]

Это не самая красивая или самая эффективная документация, когда-либо сделанная (и dox имеет немало мелких ошибок), но я считаю, что она работает довольно хорошо, по крайней мере для небольших проектов.

Ответ 2

JSDoc - это порт JavaDoc. Таким образом, в основном документация предполагает классический ООП и не подходит для JavaScript.

Лично я бы рекомендовал использовать docco для аннотирования исходного кода. Примеры этого можно найти для underscore, backbone, docco.

Хорошей альтернативой docco является groc

Что касается фактической документации API, я лично считаю, что автоматически созданная документация из комментариев просто не работает для JavaScript и рекомендует вам вручную написать документацию по API.

Примерами будут underscore API, Экспресс-API, nodejs API, socket.io docs

Похожие вопросы StackOverFlow

Ответ 3

YUIDoc - это приложение Node.js, которое генерирует документацию API из комментариев в источнике, используя синтаксис, похожий на такие инструменты, как Javadoc и Doxygen. YUIDoc обеспечивает:

  • Предварительный просмотр в реальном времени. YUIDoc включает автономный сервер doc, что делает его тривиальным для предварительного просмотра ваших документов при написании.
  • Современная разметка. Документация, созданная YUIDoc, представляет собой привлекательное функциональное веб-приложение с реальными URL-адресами и изящными резервными моментами для пауков и других агентов, которые не могут запускать JavaScript.
  • Поддержка широкого языка. YUIDoc был первоначально разработан для проекта YUI, но он не привязан к какой-либо конкретной библиотеке или языку программирования. Вы можете использовать его на любом языке, который поддерживает блоки /* */comment.

Ответ 4

Извините, я не был на StackExchange год назад, но я считаю, что ответ на ваш оригинальный вопрос заключается в использовании тега @memberOf:

/** @namespace */
database = {};

/**
 * @class
 * @memberOf database
 */
function Foo() { ... };

http://code.google.com/p/jsdoc-toolkit/wiki/TagMemberOf

Этот тег может существовать или отсутствовать, когда вы задали свой вопрос.

Ответ 5

Нашел действительно приятное решение проблемы: doxx.

Он использует dox, как упоминалось выше, и впоследствии преобразует его в хороший HTML. Имеет приятное использование и отлично работает для меня.

https://github.com/FGRibreau/doxx

Ответ 6

Я работаю с JSDoc и очень эффективен, в дополнение к легкому, но когда проекты имеют много альтернативных библиотек, это довольно сложная разработка. Я нашел Groc очень хороший инструмент на основе Docco и работает с другими языками, такими как: Python, Ruby, C + +, среди прочих...

Кроме того, Groc работает с Markdown в GitHub, который может быть намного более эффективным при работе с git в качестве контроля версий. Далее помогает сборка страниц для публикации на GitHub.

Вы также можете использовать диспетчер задач GruntJS через grunt-groc пример:

Установить пакет:

npm install grunt-groc --save-dev

настройте в своем файле задачи:

grunt.loadNpmTasks('grunt-groc');

И задача config:

// Project configuration.
grunt.initConfig({
   groc: {
    coffeescript: [
       "coffee/*.coffee", "README.md"
   ],
    options: {
       "out": "doc/"
   }
 }

});

Для задачи запуска:

grunt.registerTask('doc', ['groc'])