J'utilise actuellement JSDoc Toolkit pour documenter mon code, mais il ne correspond pas tout à fait - à savoir, il semble avoir du mal à décrire correctement les espaces de noms. Supposons que vous ayez deux classes simples dans chacun de leurs fichiers:
lib/database/foo.js
:
/** @class */
function Foo(...) {...}
/** @function ... */
Foo.prototype.init(..., cb) { return cb(null, ...); };
module.exports = foo;
Et puis quelque chose a hérité lib/database/bar.js
:
var Foo = require('./foo');
/**
* @class
* @augments Foo
*/
function Bar(....) {...}
util.inherits(Bar, Foo);
Bar.prototype.moreInit(..., cb) { return cb(null, ...); };
Dans la documentation générée, ceci est simplement sorti en tant que Foo
et Bar
, sans le premier database
(ou lib.database
), qui sont tout à fait nécessaires lorsque vous n'avez pas tout dans une portée globale.
J'ai essayé de lancer @namespace database
et @name database.Foo
à elle, mais il ne se révèle pas agréable.
Avez-vous des idées pour rendre la sortie JSDoc quelque chose de plus approprié, ou un outil entièrement différent qui fonctionne mieux avec Node.js? (J'ai regardé brièvement Natural Docs, JSDuck et j'ai survolé plusieurs autres qui avaient l'air assez obsolètes ...)
REMARQUE: Dox ne produit plus de code HTML, mais un blob de JSON décrivant le code analysé. Cela signifie que le code ci-dessous ne fonctionne plus très bien ...
Nous avons fini par utiliser Dox pour l'instant. C'est un peu comme docco , que Raynos mentionne, mais qui le montre en un seul fichier HTML pour la sortie.
Nous avons piraté cela dans nos 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" $^ > $@
Ce n'est pas la documentation la plus jolie ou la plus efficace jamais faite (et dox a pas mal de bugs mineurs) - mais je trouve que ça marche plutôt bien, au moins pour les projets mineurs.
JSDoc est un portage de JavaDoc. Donc, fondamentalement, la documentation suppose classique OOP et ce n'est pas adapté à JavaScript.
Personnellement, je recommanderais d'utiliser docco pour annoter votre code source. Des exemples peuvent être trouvés pour souligné , backbone , docco .
Une bonne alternative au docco est groc
En ce qui concerne une documentation API réelle, je trouve personnellement que la documentation générée automatiquement à partir des commentaires ne fonctionne tout simplement pas pour JavaScript et je vous recommande d'écrire à la main votre documentation API.
Les exemples seraient API de soulignement , API Express , API nodejs , socket.io docs
Questions StackOverFlow similaires
YUIDoc est une application Node.js qui génère la documentation de l'API à partir des commentaires dans la source, en utilisant une syntaxe similaire à des outils comme Javadoc et Doxygen. YUIDoc fournit:
Désolé, je n'étais pas sur StackExchange il y a un an, mais je pense que la réponse à votre question d'origine est d'utiliser la balise @memberOf:
/** @namespace */
database = {};
/**
* @class
* @memberOf database
*/
function Foo() { ... };
http://code.google.com/p/jsdoc-toolkit/wiki/TagMemberOf
Cette balise peut ou non exister lorsque vous avez posé votre question.
J'ai trouvé une solution vraiment sympa au problème: doxx.
Il utilise dox comme mentionné ci-dessus et le convertit ensuite en Nice HTML. A une utilisation agréable et a très bien fonctionné pour moi.
Je travaille avec JSDoc et est très efficace, en plus d'être simple, mais lorsque les projets ont de nombreuses bibliothèques alternatives, le développement est assez compliqué. J'ai trouvé Groc un très bon outil basé sur Docco
et qui fonctionne avec d'autres langages comme: Python, Ruby, C++, entre autres ...
De plus, Groc
fonctionne avec Markdown dans GitHub, ce qui peut être beaucoup plus efficace lorsque vous travaillez avec git comme contrôle de version. Aide également à assembler des pages pour les publier sur GitHub.
Vous pouvez également utiliser l'exemple de gestionnaire de tâches GruntJS
à grunt-groc
:
Installer le paquet:
npm install grunt-groc --save-dev
configurer dans votre fichier de tâches:
grunt.loadNpmTasks('grunt-groc');
Et la tâche de configuration:
// Project configuration.
grunt.initConfig({
groc: {
coffeescript: [
"coffee/*.coffee", "README.md"
],
options: {
"out": "doc/"
}
}
});
Pour la tâche d'exécution:
grunt.registerTask('doc', ['groc'])