如何为记录的JavaScript函数轻松创建Github友好降价?

时间:2013-03-28 23:59:44

标签: javascript github markdown jsdoc

我希望能够在JavaScript源代码中获取像 where 这样的JSDoc注释(甚至嵌套在几层函数中,在模块中甚至是匿名函数中):

/**
 *  Used to do some important thing that needs doing that works like xyz.
 *  @param {String} whatever - some string that has some purpose
 *  @param {Function} callback - a function that needs to be run
 *  @returns {Boolean} whether or not something happened
 */
 function something(whatever, callback) {
     ...

并有一些简单的方法来产生好的降价:

##`root.something(whatever,callback)`
Used to do some important thing that needs doing that works like xyz.

*Parameters*
  `whatever {String}` some string that has some purpose
  `callback {Function}` a function that needs to be run

*Returns*
   `{Boolean}` whether or not something happened

其中“root”是可以访问该函数的命名空间。或者,如果它是一个匿名函数或一个私有函数(由于某种原因应该在公共doco中,这甚至是有道理的吗??),使用一些其他约定来表示。也许

##_private_function_ `something(whatever,callback)`

  and

##_anonymous_function_`(whatever,callback)`

它不一定是那种格式,只是在Github看起来很好并且有意义的东西。理想的工具足够智能,能够获取Mustache.js之类的代码并产生良好的输出。如果它可以处理大量源文件并生成一个文档作为输出,或者根据配置生成一组链接的文档,那将是额外的好处。

最好是以一种可以完全轻松地包含在git仓库中的方式完成,这样人们就不需要设置一个高度特定的工具链来更新doco。或者至少需要一个最小的工具链。

哦,还有一匹小马。


现有选项

JSDoc,加上某种HTML - >降价转换

JSDoc非常好。但我似乎无法使其与模块配合良好。或者更确切地说,它应该是恕我直言,这是一个更大的麻烦。我不需要添加额外的标签来命名该功能。我已经尝试了@export和@name,但仍然无法让它以我想要的方式显示在最终文档中。如果某人可以指向一个JSDoc注释源,其中包含模块并且运行良好,那可能会有所帮助。 更新:JSDoc v3在模块方面似乎比v2好多了,所以这可能更合适。

即使我能像我想要的那样获得JSDoc输出,我也需要从HTML转换为markdown。我似乎找不到一个好的工具,是否存在?

Docdown

我在Docdown上玩了一下,但事实上它是PHP对我来说是一种不起作用......

YUIDoc,加上转化

我实际上没有玩过YUIDoc,但看起来还不错。不过,我需要一个转换器。它是否容易处理模块并避免必须明确提供函数名称和导出名称?

Dox,加上降价模板

Dox生成JSON作为输出,因此您需要将其与一些好的降价模板结合,并且还包括用于生成文档的模板引擎。有没有人以有用的方式组合一组这样的模板?

jGrouse,加上转化

使用ANT运行。下一步...

ScriptDoc ...

这甚至还存在吗?似乎是Aptana工作室的一部分,所以这将是一个不起作用... Aptana似乎没有任何信息。但ScriptDoc.org有一些关于破解的有趣信息,如果这有用的话......

Pdoc

Pdoc是基于Ruby的,但工具链并不罕见,所以这不是一个大问题。你可以提供自己的模板,也许已经有一些好的降价。我没有玩过它......值得吗?那里有好的降价模板吗?

还有什么?

还有什么?

自己制作!

在使用JSDoc几个小时后试图让它按照我想要的方式工作之后,我放弃了wrote my own quick and dirty solution in Java CharFunk,这是我一直在研究的unicode JavaScript库。它适用于我需要的东西,虽然它还没有接近通用目的。


所以.....

这是一个未满足的需求还是仅仅是我?

7 个答案:

答案 0 :(得分:17)

我使用jsdoc-to-markdown ..

编写记录的代码:

/**
a quite wonderful function
@param {object} - privacy gown
@param {object} - security
@returns {survival}
*/
function protection(cloak, dagger){}

获得降价文档:

$ jsdoc2md example/function.js

#protection(cloak, dagger)
a quite wonderful function

**Params**

- cloak `object` - privacy gown
- dagger `object` - security

**Returns**: `survival`

这些项目包含由jsdoc2md呈现的自述文件:

答案 1 :(得分:13)

您是否尝试过jsdox

它是一个node.js jsdoc到markdown生成器。

答案 2 :(得分:7)

markdox可以从javascript代码生成降价文档。

答案 3 :(得分:3)

jsDox。 https://github.com/sutoiku/jsdox 使用UglifyJS完整解析

莫克斯。 https://github.com/tjchaplin/mox 几个可立即运行的示例/模板。

两者都处理JSDoc / Dox格式。两者都有积极的发展。对我来说,Mox因为示例套件而获胜。

答案 4 :(得分:2)

行。经过我自己的一些考虑后,我会选择DOX + Underscore / Whatever JS模板引擎。

应该很简单。你可能甚至可能会遇到Grunt或类似的事情并让它在监视任务下运行。

据我所知,Dox是相对轻量级的,并且有一个npm包(IIRC)。

更新: 我想,经过一些经验,我想改变我对YUIDoc的回答。

答案 5 :(得分:0)

尝试使用Verb。在最简单的用例中,Verb将使用package.json中的数据从模板构建自述文件。

但如果您需要生成多页TOC或创建自定义助手等,动词也具有高级功能。

关于API文档,请参阅使用index.js中的代码注释生成的example readme。点击标题,这些也是自动生成的。使用this built-in helper从指定的任何文件路径生成API文档。您还可以使用glob模式从多个文件中提取文档。

动词会在没有任何配置的情况下构建.verb.md。但如果您需要更多,可以使用verbfile.js

答案 6 :(得分:0)

我需要从JSDoc创建一个API文档,它应该易于使用并且还支持现代前端堆栈。一些提到的库存在JS代码转换为babeljs的问题,因此您必须暂时使用注释来转换代码以生成降价文档。

对于这样的用例,我发现http://documentation.js.org/非常有用,因为它们集成了对BabelJs配置的支持,因此它负责从JSDocs生成markdown(JSON,HTML)。