jsdoc to markdown

原文:https://www.npmjs.com/package/jsdoc-to-markdown

markdown API文档生成器

本文档是一个工作正在进行中

jsdoc在文档的源代码输入,markdown 格式的API文档输出。

概要

写文件的代码:

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

运行命令:

$ jsdoc2md example/src/protection.js

得到 markdown 的文档! (用github-flavored-markdown 默认格式)

<a name="protection"></a>
## protection(cloak, dagger) ⇒ <code>survival</code>
a quite wonderful function

| Param  | Type                | Description  |
| ------ | ------------------- | ------------ |
| cloak  | <code>object</code> | privacy gown |
| dagger | <code>object</code> | security     |

这个命令可以实现相同的结果:

$ jsdoc-parse example/function.js | dmd

特征

  • 将API机制的文档插入一个README,或任意文件。
  • 自定义一个规则水平。如果输出不适合你,改变它。
  • 打包您的修改,发布到NPM并与他人分享(如dmd-bitbucket)
  • accepts.js或.html输入文件(解析HTML是实验性的 - 更多)
  • 扩展了jsdoc用一些新的标签(更多)
  • 使用任意标记,例如@fulfil,@reject,@hatredlevel等。

示例输出

一些示例输出创建使用jsdoc2md。

生成的自述文件

这些项目中插入jsdoc2md输出到readme模板。

项目笔记
handbrake-js模块露出两个方法和一个内部类。 API文档插入readme模板通过此命令:$ jsdoc2md –template jsdoc2md/README.hbs lib/*.js
array-tools很简单的模块输出的静态方法的集合。演示使用@typicalname的(设定为a)和@Category标签组标识符在成员列表中。
ansi-escape-sequences演示使用@enum{类型}(以表格形式呈现)。
file-set简单的模块导出类。

标签

你可以看到对每一jsdoc标记看起来当呈现在这里时的一个例子。

实例演示各种选项
为了得到一个想法的影响的各种选项有:

  • 格式化选项
    • example-lang
    • module-index-format
    • global-index-format
    • member-index-format
    • param-list-format
    • property-list-format
    • no-gfm
    • separators
    • name format
  • 解析选项
    • html
    • sort-by

脚本示例

如果你使用命令行工具不能实现你所需要的,你可以写一个自定义脚本。

  • 生成 markdown 文件每一个类

模板实例

默认jsdoc2md输出可能并不总是适合你。您可以使用自己的模板,使用该模板选项。你可以看到用来生成这个readme的模板。

选择器

  • Cherry-pick 其中文档出现输出使用选择助手。
    • {{#module}}
    • {{#class}}

安装和使用

首先,您的源代码文档使用正确的jsdoc语法,然后通过jsdoc-to-markdown 使用以下方法(在Mac OSX,Linux和windows8.1和Windows XP的所有测试):

命令行工具

要全局安装jsdoc2md命令行工具,运行:

$ npm install -g jsdoc-to-markdown

一些典型使用案例:

$ # dump everything you have into a single file 
$ jsdoc2md "src/**/*.js" > api.md
$ # split into separate files 
$ jsdoc2md src/main-module.js > main-module.md
$ jsdoc2md src/important-class.js > important-class.md
$ # embed documentation into a template you made 
$ jsdoc2md "src/**/*.js" --template readme.hbs > README.md

注意在通配

一般规则:如果你的文件表达式中包含* * 递归尚未失败,用引号括起表达式(例如”lib/* * / *.js”)。

如果用引号包裹,bash(或你的shell)不会试图文件名扩展在表达式上。如果不使用引号,你将需要bash的版本4+与globstar启用递归工作。

添加“生成文档”任务到你的项目工作流程

作为npm的运行任务
这是最轻量级的方式添加任务 - 不需要额外任务运行的软件。第一:

$ npm install jsdoc-to-markdown --save-dev

随后,package.json的“scripts”一节中,添加一个文档的任务。 例如:

{
  "scripts": {
    "docs": "jsdoc2md lib/*.js > api.md"
  }
}

现在,项目文档,像这样产生的:

$ npm run docs

作为一个grunt任务
看 grunt-jsdoc-to-markdown.

作为一个gulp任务
看 gulp-jsdoc-to-markdown.

贡献
问题报告和补丁的鼓励。而该项目将受益于额外的维护..

组成
从本质上讲,jsdoc2d连接jsdoc-parse的输出到DMD的输入。 DMD使用DDATA辅助库(也由DHTML共享)和数据流以产生输出。

API参考

例子

var jsdoc2md = require("jsdoc-to-markdown");

jsdoc2md([options]) ⇒ TransformStream ⏏
变换jsdoc到markdown的文档。

kind:导出的函数
params

  • [options] DmdOptions | ParseOptions - the options

例子

两种方法来使用jsdoc2md。无论是传递文件路径(**全局匹配支持)JavaScript源文件:

> jsdoc2md({ src: "lib/*.js" }).pipe(process.stdout);

或管道中的源代码来自其他资源:

fs.createReadStream("lib/main.js").pipe(jsdoc2md()).pipe(process.stdout);

dmd~DmdOptions

所有DMD选项及其缺省值

kind:DMD的内部类

  • ~DmdOptions
    • .template : string
    • .heading-depth : number
    • .example-lang : string
    • .plugin : array
    • .helper : array
    • .partial : array
    • .name-format : string
    • .no-gfm : boolean
    • .separators : boolean
    • .module-index-format : string
    • .global-index-format : string
    • .param-list-format : string
    • .property-list-format : string
    • .member-index-format : string
    • .group-by : array

dmdOptions.template : string

该模板所提供的文档会被渲染成。使用默认或提供自己的模板完全控制的输出。

kind:DmdOptions的实例属性
default:”{{>main}}”

例子

var fs = require("fs");
var dmd = require("../");

var template = "The description from my class: {{#class name='MyClass'}}{{description}}{{/class}}";

fs.createReadStream(__dirname + "/my-class.json")
    .pipe(dmd({ template: template }))
    .pipe(process.stdout);

输出:

The description from my class: MyClass is full of wonder

使用命令行工具的equivation操作:

$ dmd --template template.hbs --src my-class.json

dmdOptions.heading-depth : number

最初的标题深度。例如,具有值2的顶层markdown标题看起来像“##的标题”。

kind:DmdOptions的实例属性
default:2

dmdOptions.example-lang : string

指定使用@example块(语法高亮显示的目的)的默认语言。在GFM模式下,每个@example被包裹在一个 fenced-code块。用法示例:–example-lang js。使用特殊值none因为没有特定的语言。在使用这个选项,你可以覆盖语言提供任何@example通过指定@lang子标签,如@example @lang hbs。指定@example @lang off将禁用代码块的例子。

kind:DmdOptions的实例属性
default:”js”

dmdOptions.plugin : array

使用含有帮助 和/或 部分覆盖安装的软件包

kind:DmdOptions的实例属性

dmdOptions.helper : array

处理帮助程序文件来覆盖或继承默认设置
kind:DmdOptions的实例属性

dmdOptions.partial : array

处理部分文件覆盖或继承默认设置
kind:DmdOptions的实例属性

dmdOptions.name-format : string

在代码样式格式标识符名称,(即使用反引号格式的或
kind:DmdOptions的实例属性

dmdOptions.no-gfm : boolean

默认情况下,DMD产生github-flavoured的markdown。并非所有的markdown解析器正确地呈现GFM。如果您生成的文档看起来不正确的网站上比其他Github上(如npmjs.org)尝试启用这个选项来禁用Github-specific 的语法。

kind:DmdOptions的实例属性

dmdOptions.separators : boolean


放在标识符之间。提高了笨重文档的可读性。

kind:DmdOptions的实例属性
default:false

dmdOptions.module-index-format : string

none, grouped, table, dl

Kind: DmdOptions的实例属性
Default: “dl”

dmdOptions.global-index-format : string

none, grouped, table, dl
Kind: DmdOptions的实例属性
Default: “dl”

dmdOptions.param-list-format : string

两个选项渲染参数列表:’list’或’table’(默认值)。表格式适用于大多数情况下,但切换到列表中,如果事情开始变得拥挤/压扁。

Kind: DmdOptions的实例属性
Default: “table”

dmdOptions.property-list-format : string

list, table

Kind: DmdOptions的实例属性
Default: “table”

dmdOptions.member-index-format : string

grouped, list

Kind: DmdOptions的实例属性
Default: “grouped”

dmdOptions.group-by : array

域的列表,以组成员索引

Kind: DmdOptions的实例属性
Default: [“scope”,”category”]

jsdocParse~ParseOptions
所有jsdoc-parse选项,其中包括默认

kind:jsdocParse 的内部类

  • 解析选项
    • .src : string | Array.
    • .private : boolean
    • .stats : boolean
    • .html : boolean
    • .sort-by : array

parseOptions.src : string | Array.

源文件进行解析。如果没有设置这个选项jsdoc-parse会等待输入到流式传输。

kind:ParseOptions的实例属性
例子

var parse = require("jsdoc-parse");
var fs = require("fs");

// either supply one or more file names 
parse({ src: "example.js" }).pipe(process.stdout);

// or pipe in source code 
fs.createReadStream("example.js").parse().pipe(process.stdout);

parseOptions.private : boolean

包括标识符文档标记为@private在输出

Kind: ParseOptions的实例属性
Default: false

parseOptions.stats : boolean
打印有关doclet解析的数统计
Kind: ParseOptions的实例属性

parseOptions.html : boolean

启用的.html文件的实验分析。

Kind: ParseOptions的实例属性
Default: false

parseOptions.sort-by : array
排序通过其中一个字段,例如 –sort-by kind 类别。

Kind: ParseOptions的实例属性
Default: [“scope”,”category”,”kind”,”order”]

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值