我正在尝试让我的目录列出每个模块的常量、函数和 typedef,从而允许搜索文档。 我将 DocDash 与 JSDoc 一起使用。 JSDoc 似乎可以很好地识别类型,但类型定义不会出现在目录中。
代码定义示例
/**
* @typedef ActivityOptions
* @memberof module:CardSession
* @property {boolean} quiz ...yada yada...truncated.
*/
//Using JSON Schema compatible constant as the type definition.
export const ActivityOptions = {
type: 'object',
properties: {
quiz: {type: 'boolean'},
canSkip: {type: 'boolean'},
repeat: {type: 'boolean'},
timeLimit: {type:'number'},//in percent
questionLimit: {type: 'number'},
passingProps: PassingProps,
prereq: {
type: 'array',
members: {type: 'string'}
},
completion: {
type: 'array',
members: {type: 'string'}
},
rules: EnumActivityRules
},
required: ['quiz','canSkip','repeat','passingProps','prereq','completion','rules'],
additionalProperties: false
};
这是我的 jsdoc.json。 如果相关,可以提供完整文件,但这里仅是“docdash”成员。
{
"docdash": {
"static": true,
"sort": true,
"sectionOrder": [
"Classes",
"Tutorials",
"Modules",
"Externals",
"Events",
"Namespaces",
"Mixins",
"Interfaces"
],
"disqus": "musicards.io",
"search": true,
"commonNav": false,
"collapse": true,
"wrap": false,
"typedefs": true,
"navLevel": 1,
"private": true,
"removeQuotes": "none",
"scripts": [],
"ShortenTypes": false,
"scopeInOutputPath": true,
"nameInOutputPath": true,
"versionInOutputPath": true
}
}
在菜单上,typedef 正确地列在模块中,但它隐藏在所有函数下并且未显示在目录中。 此外,由于这个原因,快速搜索栏不会显示 typedef 作为结果。
如果您有全局 typedef(即不属于任何内容的类型定义),那么 docdash 会将它们列在“全局”部分中。 如果列出,则可以搜索它们。 但是,如果您的 typedef 是命名空间的成员,则 docdash cant 无法渲染它们。 这是因为 jsdoc 的
templateHelper.js
脚本的 getMembers
方法仅收集全局 typedef(请参阅https://github.com/jsdoc/jsdoc/blob/183910bb39d9cf252bc3a4421d144682301cffa5/packages/jsdoc-template-legacy/lib/templateHelper.js#L571-L574),而docdash只消耗getMembers
的结果。