5

我正在尝试使用 JSDoc(3) 记录一个 Javascript 文件,如下所示:

/** 1 if gnome-bluetooth is available, 0 otherwise                              
 * @type {boolean}                                                              
 * @const                                                                                                                                           
 */                                                                             
const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;                                     

现在文件(称为config.js.in)本身不是有效的 Javascript;该文件通过 Makefile 运行,该文件用适当的值替换@HAVE_BLUETOOTH@.

当我尝试对此运行 JSdoc 时,它(可以理解)由于文件中的语法错误而犹豫不决。

有没有办法告诉 JSDoc 忽略这个文件中的所有代码,而只考虑注释?(我可能必须@name为每个 doclet 添加标签以将文档与代码完全分开;这很好)。

就像是:

/** 1 if gnome-bluetooth is available, 0 otherwise                              
 * @name HAVE_BLUETOOTH
 * @type {boolean}                                                              
 * @const                                                                 
 */                    
/** @ignore */  // somehow ignore from here onwards
const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@; 
/** !@ignore */ // somehow don't ignore from here onwards (although I'd be happy
                // to ignore the entire file)

如果可能的话,我不想修改文件的代码部分(我正在向现有项目添加文档)。例如,我可能会绕过它

const HAVE_BLUETOOTH = parseInt('@HAVE_BLUETOOTH@', 10); 

这将使文件再次具有有效的 JS 语法,以便解析器不会抱怨,但这也意味着我正在修改我想要避免的原始文件的代码(我更喜欢添加文档)。

干杯

4

1 回答 1

0

我的情况类似,因为我使用 JSDoc 来评论我的.less.css文件。当我在一组文件上运行 JSDoc 时,我遇到了同样的问题。

commentsOnly所以,我用JSDoc 插件解决了我的问题(使用 JSDoc 3.3.3)

我已经创建了这个config.json

{
    "source": {
        "includePattern": ".+\\.(css|less)?$"
    },
    "plugins": [
        "plugin/commentsOnly"
    ]
}

commentsOnly.js文件放入一个plugin/目录(考虑plugin/config.json在同一个文件夹中)并在此文件夹中执行以下 CLI 命令:

jsdoc -c ./config.json ./assets/stylesheets/common.less

这是工作!没有理由这不适用于您的文件。

希望我能帮助你;)

于 2015-12-04T15:41:44.820 回答