使用配置文件配置JSDoc
目录
- 配置文件格式
- 默认配置选项
- 插件配置
- 指定递归深度
- 指定输入文件
- Specifying the source type
- 合并命令行选项到配置文件
- Configuring tags and tag dictionaries
- Configuring templates
- Related Links
配置文件格式
To customize JSDoc's behavior, you can provide a configuration file to JSDoc in one of the following formats: 要自定义JSDoc的行为,可以使用下面格式的配置文件
- JSON文件: 在 JSDoc 3.3.0 或更高版本, 此文件中可以包含注释。
- 导出单个配置对象的CommonJS模块:此格式被 JSDoc 3.5.0 或更高版本支持。
在运行JSDoc时指定配置文件,使用[-c
命令行选项][about-commadline]即可。(例如
jsdoc -c /path/to/conf.json
或 jsdoc -c /path/to/conf.js
)
下面的示例展示展示了如何在一个简单的配置文件中让JSDoc开启Markdown 插件支持。JSDoc配置选项将在后面的章节中详细解释。
有关JSON配置文件的更多内容,请查看conf.json.EXAMPLE
.
默认配置选项
如果没有为JSDoc指定配置文件,那么JSDoc将使用下面的默认配置:
这意味着:
- 没有拆件被加载 (
plugins
). - 如果使用
-r
命令行选项开启了递归支持, JSDoc的递归深度为10 (recurseDepth
). - 仅后缀名为
.js
,.jsdoc
, and.jsx
的文件会被处理(source.includePattern
). - 任何以下划线开始的文件或目录将会被忽略 (
source.excludePattern
). - JSDoc 支持使用 ES2015 modules的代码 (
sourceType
). - JSDoc 允许你使用未识别的标签 (
tags.allowUnknownTags
). - JSDoc 的标准标签 和 Closure Compiler
tags都是支持的(
tags.dictionaries
). - 内联
{@link}
标签 以纯文本的方式被渲染 (templates.cleverLinks
,templates.monospaceLinks
).
这些以及其他选项将在后面的章节中进行详细解释。
插件配置
想要开启插件,就将插件的路径(相对于JSDoc目录)添加到plugins
数组。
比如,下面的JSON配置文件将会开启Markdown插件(将Markdown-formatterd文本转换为HTML)和"summarzie"插件(自动为每个Doclet生成总结)
查看 插件手册页 获取更多信息, 并且查看 JSDoc's plugins
目录 获取JSDoc的内建插件。
你可通过在配置文件中添加markdown
对象来配置Markdown插件,更多信息请查看配置Markdown插件。
指定递归深度
The recurseDepth
option controls how many levels deep JSDoc will recursively search for source
files and tutorials. This option is available in JSDoc 3.5.0 and later. This option is used only if
you also specify the -r
command-line flag, which tells JSDoc to recursively
search for input files.
指定输入文件
source
选项组,结合给JSDoc命令行的路径,确定哪些文件要用JSDoc生成文档。
-
source.include
: 可选的路径数组,JSDoc应该为它们生成文档。JSDoc将会结合命令行上的路径和这些文件名,以形成文件组,并且扫描。如果路径是一个目录,可以使用-r
选项来递归。 -
source.exclude
: 可选的路径数组,JSDoc应该忽略的路径。在JSDoc3.3.0或更高版本,该数组可包括source.include
路径中的子目录。 -
source.includePattern
: 一个可选的字符串,解释为一个正则表达式。如果存在,所有文件必须匹配这个正则表达式,以通过JSDoc进行扫描。默认情况下此选项设置为".+\.js(doc)?$",这意味着只有以.js
或者.jsdoc
结尾的文件将被扫描。 -
source.excludePattern
: 一个可选的字符串,解释为一个正则表达式。如果存在的话,任何匹配这个正则表达式的文件将被忽略。默认设置是以下划线开头的文件(或以下划线开头的目录下的所有文件)将被忽略。
这些选项中使用的顺序是:
-
以命令行上给定的路径开始,并且在
source.include
中的所有文件(记得,使用-r命令行选项将在子目录中搜索)。 -
对于在步骤1中找到的每个文件,如果正则表达式
source.includePattern
存在,该文件必须匹配,否则将被忽略。 -
于在步骤2中遗留下的每个文件,如果正则表达式
source.excludePattern
存在,任何匹配这个正则表达式的文件将被忽略。 -
对于在步骤3中遗留下的每个文件,如果路径在
source.exclude
中,那么它将被忽略。
经过这四个步骤的所有剩余文件由JSDoc进行解析。
举个例子,假设我有以下文件结构:
我把我的conf.json
文件中的source部分设置成这样:
如果我从包含在myProject文件夹中的文件运行JSDoc,像这样:
jsdoc myProject/c.js -c /path/to/my/conf.json -r
然后JSDoc会为这些文件生产文档:
myProject/a.js
myProject/c.js
myProject/lib/a.js
原因如下:
- 根据
source.include
和命令行中给定的路径,我们开始扫描文件myProject/c.js
(来着命令行)myProject/a.js
(来自source.include
)myProject/lib/a.js
,myProject/lib/ignore.js
,myProject/lib/d.txt
(来自source.include
和-r
选项)myProject/_private/a.js
(来自source.include
)
- JSDoc 应用
source.includePattern
, 剩下除了myProject/lib/d.txt
(没有以.js
,.jsdoc
, or.jsx
结尾)以外的所有文件。 - JSDoc 应用
source.excludePattern
, 将移除myProject/_private/a.js
. - JSDoc 应用
source.exclude
, 将移除myProject/lib/ignore.js
.
Specifying the source type
The sourceType
option affects how JSDoc parses your JavaScript files. This option is available in
JSDoc 3.5.0 and later. This option accepts the following values:
module
(default): Use this value for most types of JavaScript files.script
: Use this value if JSDoc logs errors such asDelete of an unqualified identifier in strict mode
when it parses your code.
合并命令行选项到配置文件
你可以把许多JSDoc的命令行选项放到配置文件,而不用在命令行中指定它们。要做到这一点,只要在conf.json
的opts
部分中使用的相关选项的longnames,值是该选项的值。
这样可以通过source.include
和opts
,你可以把所有的JSDoc的参数放在配置文件中,以便命令行简化为:
jsdoc -c /path/to/conf.json
在命令行中所提供的选项 优先级高于在conf.json中提供的选项。
Configuring tags and tag dictionaries
The options in tags
control which JSDoc tags are allowed and how each tag is interpreted.
The tags.allowUnknownTags
property affects how JSDoc handles unrecognized tags. If you set this
option to false
, and JSDoc finds a tag that it does not recognize (for example, @foo
), JSDoc
logs a warning. By default, this option is set to true
. In JSDoc 3.4.1 and later, you can also
set this property to an array of tag names that JSDoc should allow (for example, ["foo","bar"]
).
The tags.dictionaries
property controls which tags JSDoc recognizes, as well as how JSDoc
interprets the tags that it recognizes. In JSDoc 3.3.0 and later, there are two built-in tag
dictionaries:
jsdoc
: Core JSDoc tags.closure
: Closure Compiler tags.
By default, both dictionaries are enabled. Also, by default, the jsdoc
dictionary is listed first;
as a result, if the jsdoc
dictionary handles a tag differently than the closure
dictionary, the
jsdoc
version of the tag takes precedence.
If you are using JSDoc with a Closure Compiler project, and you want to avoid using tags that
Closure Compiler does not recognize, change the tags.dictionaries
setting to ["closure"]
. You
can also change this setting to ["closure","jsdoc"]
if you want to allow core JSDoc tags, but you
want to ensure that Closure Compiler-specific tags are interpreted as Closure Compiler would
interpret them.
Configuring templates
The options in templates
affect the appearance and content of generated documentation. Third-party
templates may not implement all of these options. See Configuring JSDoc's Default
Template for additional options that the default template supports.
If templates.monospaceLinks
is true, all link text from the inline {@link}
tag will be rendered in monospace.
If templates.cleverLinks
is true, {@link asdf}
will be rendered in normal font if asdf
is a
URL, and monospace otherwise. For example, {@link http://github.com}
will render in plain text,
but {@link MyNamespace.myFunction}
will be in monospace.
If templates.cleverLinks
is true, templates.monospaceLinks
is ignored.