让 JSDoc 为模块中的私有(非导出)函数生成文档

Have JSDoc generate documentation for private (non-exported) functions in module

我正在使用 JSDoc 生成器为我使用 AMD 模块的项目生成一些好看的文档。

在我的项目中,我有一些模块包含未导出的函数,因此无法从模块外部使用它们。生成JSDoc时,文档中不包含这些函数。

我创建了以下示例模块来说明我的示例:

/**
 * Example foobar module
 * @module foobar
 */
define([], function () {

    /**
     * Returns foo
     * @returns {string} - The string "foo"
     */
    function foo() {
        return "foo";
    }

    return {
        /**
         * Returns bar
         * @returns {string} - The string "bar"
         */
        bar: function(){
            return "bar";
        }
    }
});

当我为上述模块生成文档时,文档中只包含 bar 函数,而我还想将 foo 函数包含在我的文档中并标记为私有.

有什么办法可以实现吗?谢谢

注意:这是在 JSDoc 3 上测试的

这有两部分:

  • 获取 JSDoc 为嵌套函数生成代码
  • 获取JSDoc为私有成员生成代码

获取 JSDoc 为嵌套函数生成代码

/**
 * Returns foo
 * @memberOf module:foobar
 * @returns {string} - The string "foo"
 */
function foo() {
    return "foo";
}

默认情况下,不记录嵌套函数。为此,请添加 @memberOf 指令。这会强制 JSDoc 将函数记录为模块的成员。注意 module: 前缀 - 这是一个标准。

这应该使 foo 显示在模块 foobarMethods 部分下。

获取JSDoc为私有成员生成代码

现在,只需将函数标记为私有即可。为此,请使用 @private 指令。

/**
 * Returns foo
 * @private
 * @memberOf module:foobar
 * @returns {string} - The string "foo"
 */
function foo() {
    return "foo";
}

您会注意到现在的文档再次不包含方法foo。这是因为 JSDoc 默认忽略私有成员。要同时为私有成员生成代码,请使用 -p 命令行选项。

jsdoc foobar.js -p

现在 foo 在 foobar 中显示为 (private, static) 方法,而 bar 只是 (static).