从 jsDoc 输出中排除外部
Exclude Externals from jsDoc output
我们如何从 jsDoc 输出中正确排除 Externals
部分?
我的项目中有很多我根本不想在导航面板上显示的外部组件,因为它们占用了所有 space,对我们没用。
我已经能够通过更改文件 node_modules\jsdoc\lib\util\templateHelper.js
中的代码手动破解它,但这不是我的开发团队可重用的方法。
破解是用空数组覆盖 members.externals
:
/*
members.externals = members.externals.map(function(doclet) {
doclet.name = doclet.name.replace(/(^"|"$)/g, '');
return doclet;
});
*/
members.externals = [];
不幸的是,在使用 jsDoc
多年后,我所能做的就是在每次更新依赖项后继续重新破解它,在文件 node_modules\jsdoc\lib\util\templateHelper.js
.
中
幸运的是,即使使用当前版本 3.5.5,破解仍然有效:
// HACK: set Externals to an empty list:
members.externals = []; /*members.externals.map(function(doclet) {
doclet.name = doclet.name.replace(/(^"|"$)/g, '');
return doclet;
});*/
我不确定这是否更优雅,但这就是我最终所做的。它适用于所有项目,无需修改 jsdoc 安装。
我的问题:我有 类 从导入的 node_modules 派生的,我希望我的文档中包含继承的信息,但我不希望基础 类 堵塞侧边栏导航。
首先,我在我的 jsdoc 模板中添加了一个插件(我称之为 skip-node_modules):
exports.handlers = {
processingComplete: function (e)
{
for (let i = 0; i < e.doclets.length; i++)
{
const doclet = e.doclets[i]
if (!doclet.undocumented && doclet.meta && doclet.meta.path.indexOf('node_modules') !== -1)
{
// hack the name so I can find it in the .tmpl file
// I tried to add a new flag to the doclet, but it didn't pass through
doclet.longname += '~'
}
}
}
};
然后我在navigation.tmpl中添加了一个检查:
<ul class="list">
<?js
this.nav.forEach(function (item) {
?>
<?js if (item.longname[item.longname.length - 1] !== '~') { ?>
<li class="item" data-name="<?js= item.longname ?>">
...
<? } ?>
噗,我的边栏中不再有 node_module 导入。 (这确实有一个缺点,就是当您点击这些 类 时不显示侧边栏。我相信通过更多的黑客攻击我可以摆脱它,但这并不是太重要。)
很容易将其更改为检查外部符号。 console.log(e) 在插件中获取 doclet 提供的所有信息并找到适合您情况的信息。
我们如何从 jsDoc 输出中正确排除 Externals
部分?
我的项目中有很多我根本不想在导航面板上显示的外部组件,因为它们占用了所有 space,对我们没用。
我已经能够通过更改文件 node_modules\jsdoc\lib\util\templateHelper.js
中的代码手动破解它,但这不是我的开发团队可重用的方法。
破解是用空数组覆盖 members.externals
:
/*
members.externals = members.externals.map(function(doclet) {
doclet.name = doclet.name.replace(/(^"|"$)/g, '');
return doclet;
});
*/
members.externals = [];
不幸的是,在使用 jsDoc
多年后,我所能做的就是在每次更新依赖项后继续重新破解它,在文件 node_modules\jsdoc\lib\util\templateHelper.js
.
幸运的是,即使使用当前版本 3.5.5,破解仍然有效:
// HACK: set Externals to an empty list:
members.externals = []; /*members.externals.map(function(doclet) {
doclet.name = doclet.name.replace(/(^"|"$)/g, '');
return doclet;
});*/
我不确定这是否更优雅,但这就是我最终所做的。它适用于所有项目,无需修改 jsdoc 安装。
我的问题:我有 类 从导入的 node_modules 派生的,我希望我的文档中包含继承的信息,但我不希望基础 类 堵塞侧边栏导航。
首先,我在我的 jsdoc 模板中添加了一个插件(我称之为 skip-node_modules):
exports.handlers = {
processingComplete: function (e)
{
for (let i = 0; i < e.doclets.length; i++)
{
const doclet = e.doclets[i]
if (!doclet.undocumented && doclet.meta && doclet.meta.path.indexOf('node_modules') !== -1)
{
// hack the name so I can find it in the .tmpl file
// I tried to add a new flag to the doclet, but it didn't pass through
doclet.longname += '~'
}
}
}
};
然后我在navigation.tmpl中添加了一个检查:
<ul class="list">
<?js
this.nav.forEach(function (item) {
?>
<?js if (item.longname[item.longname.length - 1] !== '~') { ?>
<li class="item" data-name="<?js= item.longname ?>">
...
<? } ?>
噗,我的边栏中不再有 node_module 导入。 (这确实有一个缺点,就是当您点击这些 类 时不显示侧边栏。我相信通过更多的黑客攻击我可以摆脱它,但这并不是太重要。)
很容易将其更改为检查外部符号。 console.log(e) 在插件中获取 doclet 提供的所有信息并找到适合您情况的信息。