从JSDOC输出中排除外部



我们如何正确地将 Externals章节从jsdoc输出中排除?

我的项目中有很多外部,我根本不想在导航面板上显示,因为它占用了所有空间,对我们来说毫无用处。

我能够通过更改文件node_modulesjsdoclibutiltemplateHelper.js中的代码手动破解它,但这对于我的开发人员团队而言并不是可重复使用的方法。

黑客用空数组覆盖members.externals

/*
    members.externals = members.externals.map(function(doclet) {
        doclet.name = doclet.name.replace(/(^"|"$)/g, '');
        return doclet;
    });
*/
    members.externals = [];

不幸的是,在使用jsDoc多年后,我所能做的就是在每次更新依赖项之后继续重新添加它,文件node_modulesjsdoclibutiltemplateHelper.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-template上添加了一个插件(我称其为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 ?>">
    ...
    <? } ?>

和poo,在我的侧边栏中不再进口node_module。(这确实具有单击这些课程时不显示侧边栏的缺点。我敢肯定,我可以摆脱这一点,但这并不重要。)

检查外部符号很容易更改。插件中的console.log(e)以获取Doclet提供的所有信息并找到适合您的情况的信息。

最新更新