Table of Contents
jsdoc 是一个可以根据注释自动生成文档的前端包。这在写公共库的时候很有用。相关文档也比较全面,问题是有时按照文档的操作,我没能得到预期的结果。
ps: 不要用 jsdoc-babel 插件。转译后的代码注释与预期不一样。
类注释
根据文档的说法,jsdoc 3.4 之后的 class 不需要手动添加 @class 之类的注视了,但是,我没能得到预期结果(jsdoc@3.6.7)。为了能让 class 和下面的方法都标注出来,尝试了个把小时。所以这里记录一下,贴个样例。
/** * @class NIM * @extends IMBase * @param {object} config 配置 * @param {string} config.appKey 网易云信帐号<meta charset="utf-8"> * @param {string} [config.debug=true] 网易云信帐号 * @param {boolean} [immediateLogin] 是否需要立即登录,默认 true * @description 网易云信 im * @example * ``` * const config = { * appKey: '' * } * new NIM(config) * * ``` */ class NIM extends IMBase { constructor(config, immediateLogin = true) { super(config) /** * @memberof NIM * @type {object} */ this.instance = null } /** * @memberof NIM * @method login * 登录 */ login() { } }
对于需要嵌套的参数,需要在本参数下方使用 xx.yy 的方式注释。比如上面的 config 子属性。
更换模板
jsdoc 默认的模板不太美观。所以有时需要更换模板。这里以 docstrap 为例。
安装:
npm install ink-docstrap
然后修改文档生成脚本:
"scripts": { "build": "babel src --out-dir lib", "docs": "jsdoc -c jsdoc.json -t ./node_modules/ink-docstrap/template" }
在 jsdoc.json 里可以配置一下文档标题(templates 部分):
{ "plugins": ["node_modules/jsdoc-babel"], "source": { "include": ["src"], "exclude": [], "includePattern": ".+\\.js(doc)?$", "excludePattern": "(^|\\/|\\\\)_" }, "opts": { "encoding": "utf8", "destination": "./docs/", "recurse": true }, "templates": { "systemName": "药联聊天前端文档", "cleverLinks": false, "monospaceLinks": false } }
前端的每一步都是磕磕碰碰。我顺利过吗?