对象文字中的JSDoc引用函数(CommonJS module.exports)

时间:2016-01-01 21:40:28

标签: jsdoc jsdoc3

我正在编写一个CommonJS模块,并将我的所有方法定义为模块中的函数定义。然后在module.exports对象中定义这些方法。这都是用es6编写的。

但是,使用我的注释,生成的文档只链接到对象定义,而不显示方法的实际文档。

// file named utils.js
const regular = require('regular');
const isEmpty = require('lodash.isempty);

/**
 * @memberof utils
 * @param {object} obj The value to check if it is an object or not
 * @returns {boolean}
 */
function isTrueObject(obj) {
    return !Array.isArray(obj) && typeof obj === 'object' && !isEmpty(obj) ;
}
/**
 * @memberof utils
 * @param {*} val
 * @returns {boolean}
 */
function isNumberLike(val) {
    return isNumber(val) || regular.number.test(val);
}

/**
 * @module utils
 */
module.exports = {
    isTrueObject,
    isNumberLike
};

如果我按原样保留module.exports属性名称,则不会生成任何文档,但utils的空白页除外:

blank documentation page

我必须执行以下操作才能获得正确的文档:

// file named utils.js
const regular = require('regular');
const isEmpty = require('lodash.isempty);

/**
 * @memberof utils
 * @param {object} obj The value to check if it is an object or not
 * @returns {boolean}
 */
function isTrueObject(obj) {
    return !Array.isArray(obj) && typeof obj === 'object' && !isEmpty(obj) ;
}
/**
 * @memberof utils
 * @param {*} val
 * @returns {boolean}
 */
function isNumberLike(val) {
    return isNumber(val) || regular.number.test(val);
}

/**
 * @module utils
 */
module.exports = {
    /**
     * @function
     * @param {object} obj The value to check if it is an object or not
     * @returns {boolean}
     */
    isTrueObject,
    /**
     * @function
     * @param {*} val
     * @returns {boolean}
     */
    isNumberLike
};

这显然不太理想,因为文档不在实际功能声明之上,这很容易导致文档重复。是否有不同的方法来链接这些并生成相同的文档?

proper documentation output

我尝试了以下内容,但我得到的只是代码本身的链接,没有实际的文档输出:

/**
 * @module utils
 */
module.exports = {
    /** @see module:utils#isTrueObject */
    isTrueObject,
    /** @borrows isNumberLike as isNumberLike */
    isNumberLike
};

使用@see@borrow生成以下内容:

only links

这显然不是理想的输出。

有没有人知道如何正确记录这一点而不必重复?

1 个答案:

答案 0 :(得分:0)

@module声明移到文件顶部,将@memberof utils替换为@static,产生预期结果:

// file named utils.js
/**
 * @module utils
 */
const regular = require('regular');
const isEmpty = require('lodash.isempty);

/**
 * @static
 * @param {object} obj The value to check if it is an object or not
 * @returns {boolean}
 */
function isTrueObject(obj) {
    return !Array.isArray(obj) && typeof obj === 'object' && !isEmpty(obj) ;
}
/**
 * @static
 * @param {*} val
 * @returns {boolean}
 */
function isNumberLike(val) {
    return isNumber(val) || regular.number.test(val);
}

module.exports = {
    isTrueObject,
    isNumberLike
};