loggingNode.js项目

我目前正在使用JSDoc工具包来logging我的代码,但是它不太适合 – 也就是说,它似乎很难正确描述名称空间。 假设你的每个文件都有两个简单的类:

lib/database/foo.js

 /** @class */ function Foo(...) {...} /** @function ... */ Foo.prototype.init(..., cb) { return cb(null, ...); }; module.exports = foo; 

然后inheritancelib/database/bar.js

 var Foo = require('./foo'); /** * @class * @augments Foo */ function Bar(....) {...} util.inherits(Bar, Foo); Bar.prototype.moreInit(..., cb) { return cb(null, ...); }; 

在生成的文档中,这只是作为FooBar输出,没有领先的database (或lib.database ),当您没有全局范围内的所有内容时,这是非常必要的。

我已经尝试过抛出@namespace database@name database.Foo ,但它并不好。

任何想法使JSDoc输出更合适的东西,或者一些完全不同的工具,更好地使用Node.js? (我简单地看了一下自然文档,JSDuck,还有很多看起来已经过时了的其他东西…)

    JSDoc是JavaDoc的一个端口。 所以基本上文档假定古典的OOP,这不适合于JavaScript。

    我个人build议使用docco来注释你的源代码。 它的例子可以find下划线 , 骨干 , docco 。

    docco是一个很好的select是groc

    至于实际的API文档,我个人发现从评论中自动生成的文档不适用于JavaScript,并build议您手写您的API文档。

    示例将是下划线API , Express API , nodejs API , socket.io文档

    类似的StackOverFlow问题

    • 生成Javascript文档

    YUIDoc是一个Node.js应用程序,它使用类似于Javadoc和Doxygen等工具的语法从源代码中的注释生成API文档。 YUIDoc提供:

    • 实时预览。 YUIDoc包含一个独立的文档服务器,使您在写作时预览文档变得微不足道。
    • 现代标记。 YUIDoc生成的文档是一个有吸引力的function性的Web应用程序,具有真正的URL和适合蜘蛛和其他无法运行JavaScript的代理的优雅回退。
    • 广泛的语言支持。 YUIDoc最初是为YUI项目devise的,但它不受任何特定的库或编程语言束缚。 您可以使用任何支持/ * * /注释块的语言。

    注意: Dox不再输出HTML,而是描述parsing代码的一块JSON。 这意味着下面的代码不再工作得非常好…

    我们结束了现在使用Dox 。 这很像docco ,Raynos提到,但把它全部放在一个HTML文件中输出。

    我们把这个入侵到我们的makefile

     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" $^ > $@ 

    这不是有史以来最漂亮或最有效的文档(而且dox有很多小错误) – 但是我发现它工作得相当好,至less对于小项目来说。

    对不起,一年前我没有在StackExchange上,但是我相信你原来的问题的答案是使用@memberOf标签:

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

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

    当你问你的问题时,这个标签可能存在也可能不存在。

    find一个非常好的解决scheme:doxx。

    它使用上面提到的dox,然后把它转换成漂亮的HTML。 有一个很好的用法,对我很好。

    https://github.com/FGRibreau/doxx

    我和JSDoc一起工作非常高效,除了容易,但是当项目有很多的替代库时,开发起来相当复杂。 我发现Groc是一个基于Docco的非常好的工具,可以和其他语言Docco工作:Python,Ruby,C ++等等。

    另外Groc在GitHub中使用Markdown,当使用git作为版本控制时,效率会更高。 进一步帮助组装页面在GitHub上发布。

    你也可以通过grunt-groc例子使用任务pipe理器GruntJS

    安装包:

    npm install grunt-groc --save-dev

    在你的任务文件中configuration:

    grunt.loadNpmTasks('grunt-groc');

    和configuration任务:

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

    });

    运行任务:

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