設定ファイルを使用した JSDoc の設定
設定ファイルのフォーマット
JSDoc の動作をカスタマイズするには、以下のいずれかのフォーマットの設定ファイルを JSDoc に提供します。
- JSON ファイル。JSDoc 3.3.0 以降では、このファイルにコメントを含めることができます。
- 単一の設定オブジェクトをエクスポートする CommonJS モジュール。このフォーマットは JSDoc 3.5.0 以降でサポートされています。
設定ファイルを使用して JSDoc を実行するには、-c
コマンドラインオプションを使用します(例:jsdoc -c /path/to/conf.json
または jsdoc -c /path/to/conf.js
)。
以下の例は、JSDoc の Markdown プラグインを有効にする単純な設定ファイルを示しています。JSDoc の設定オプションについては、以下のセクションで詳しく説明します。
{
"plugins": ["plugins/markdown"]
}
'use strict';
module.exports = {
plugins: ['plugins/markdown']
};
JSON 設定ファイルのより包括的な例については、conf.json.EXAMPLE
ファイルを参照してください。
デフォルトの設定オプション
設定ファイルを指定しない場合、JSDoc は以下の設定オプションを使用します。
{
"plugins": [],
"recurseDepth": 10,
"source": {
"includePattern": ".+\\.js(doc|x)?$",
"excludePattern": "(^|\\/|\\\\)_"
},
"sourceType": "module",
"tags": {
"allowUnknownTags": true,
"dictionaries": ["jsdoc","closure"]
},
"templates": {
"cleverLinks": false,
"monospaceLinks": false
}
}
これは以下のことを意味します。
- プラグインはロードされません(
plugins
)。 -r
コマンドラインフラグで再帰が有効になっている場合、JSDoc は 10 レベルの深さまでファイルを検索します(recurseDepth
)。.js
、.jsdoc
、および.jsx
で終わるファイルのみが処理されます(source.includePattern
)。- アンダースコアで始まるファイル、またはアンダースコアで始まるディレクトリにあるファイルは無視されます(
source.excludePattern
)。 - JSDoc は、ES2015 モジュールを使用するコードをサポートしています(
sourceType
)。 - JSDoc では、認識されないタグを使用できます(
tags.allowUnknownTags
)。 - 標準の JSDoc タグと Closure Compiler タグの両方が有効になっています(
tags.dictionaries
)。 - インライン
{@link}
タグはプレーンテキストでレンダリングされます(templates.cleverLinks
、templates.monospaceLinks
)。
これらのオプションやその他のオプションについては、以下のセクションで説明します。
プラグインの設定
プラグインを有効にするには、JSDoc フォルダからの相対パスを plugins
配列に追加します。
たとえば、次の JSON 設定ファイルは、Markdown 形式のテキストを HTML に変換する Markdown プラグインと、各 doclet の概要を自動生成する「summarize」プラグインを有効にします。
{
"plugins": [
"plugins/markdown",
"plugins/summarize"
]
}
詳細については、プラグインリファレンスを参照し、JSDoc に組み込まれているプラグインについては、JSDoc の plugins
ディレクトリを参照してください。
設定ファイルに markdown
オブジェクトを追加することで、Markdown プラグインを設定できます。詳細については、Markdown プラグインの設定を参照してください。
再帰の深さの指定
recurseDepth
オプションは、JSDoc がソースファイルとチュートリアルを再帰的に検索する深さを制御します。このオプションは JSDoc 3.5.0 以降で使用できます。このオプションは、JSDoc に入力ファイルを再帰的に検索するように指示する -r
コマンドラインフラグも指定した場合にのみ使用されます。
{
"recurseDepth": 10
}
入力ファイルの指定
source
オプションセットは、コマンドラインで JSDoc に指定されたパスと組み合わせて、JSDoc がドキュメントの生成に使用する入力ファイルのセットを決定します。
{
"source": {
"include": [ /* array of paths to files to generate documentation for */ ],
"exclude": [ /* array of paths to exclude */ ],
"includePattern": ".+\\.js(doc|x)?$",
"excludePattern": "(^|\\/|\\\\)_"
}
}
source.include
: JSDoc がドキュメントを生成するファイルを含むパスのオプションの配列。コマンドラインで JSDoc に指定されたパスは、これらのパスと結合されます。-r
コマンドラインオプションを使用して、サブディレクトリを再帰的に検索できます。source.exclude
: JSDoc が無視するパスのオプションの配列。JSDoc 3.3.0 以降では、この配列にはsource.include
のパスのサブディレクトリを含めることができます。source.includePattern
: 正規表現として解釈されるオプションの文字列。存在する場合、すべてのファイル名は JSDoc によって処理されるために、この正規表現と一致する必要があります。デフォルトでは、このオプションは ".+\.js(doc|x)?$" に設定されており、拡張子が.js
、.jsdoc
、および.jsx
のファイルのみが処理されます。source.excludePattern
: 正規表現として解釈されるオプションの文字列。存在する場合、この正規表現に一致するファイルはすべて無視されます。デフォルトでは、このオプションは、アンダースコアで始まるファイル(またはアンダースコアで始まるディレクトリ以下のファイル)が無視されるように設定されています。
これらのオプションは、以下の順序で解釈されます。
- コマンドラインと
source.include
で指定されたすべてのパスから開始します。 - 手順 1 で見つかった各ファイルについて、正規表現
source.includePattern
が存在する場合、ファイル名はそれと一致する必要があります。そうでない場合は無視されます。 - 手順 2 から残った各ファイルについて、正規表現
source.excludePattern
が存在する場合、この正規表現に一致するファイル名は無視されます。 - 手順 3 から残った各ファイルについて、ファイルのパスが
source.exclude
にある場合、無視されます。
これら 4 つの手順の後、残りのすべてのファイルが JSDoc によって処理されます。
例として、次のファイル構造があるとします。
myProject/
|- a.js
|- b.js
|- c.js
|- _private
| |- a.js
|- lib/
|- a.js
|- ignore.js
|- d.txt
さらに、conf.json
ファイルが次の例のようになっているとします。
{
"source": {
"include": ["myProject/a.js", "myProject/lib", "myProject/_private"],
"exclude": ["myProject/lib/ignore.js"],
"includePattern": ".+\\.js(doc|x)?$",
"excludePattern": "(^|\\/|\\\\)_"
}
}
myProject
フォルダを含むファイルから jsdoc myProject/c.js -c /path/to/my/conf.json -r
を実行すると、JSDoc は以下のファイルのドキュメントを生成します。
myProject/a.js
myProject/c.js
myProject/lib/a.js
理由は次のとおりです。
source.include
とコマンドラインで指定されたパスを考慮すると、JSDoc は以下のファイルから開始します。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
を適用し、.js
、.jsdoc
、または.jsx
で終わらないmyProject/lib/d.txt
*以外* の上記のすべてのファイルを残します. - JSDoc は
source.excludePattern
を適用し、myProject/_private/a.js
を削除します. - JSDoc は
source.exclude
を適用し、myProject/lib/ignore.js
を削除します.
ソースタイプの指定
sourceType
オプションは、JSDoc が JavaScript ファイルを解析する方法に影響します。このオプションは JSDoc 3.5.0 以降で使用できます。このオプションは、以下の値を受け入れます。
module
(デフォルト): ほとんどの種類の JavaScript ファイルにこの値を使用します。script
: JSDoc がコードを解析するときにDelete of an unqualified identifier in strict mode
などのエラーをログに記録する場合は、この値を使用します。
{
"sourceType": "module"
}
コマンドラインオプションの設定ファイルへの組み込み
JSDoc の コマンドラインオプションの多くは、コマンドラインで指定する代わりに、設定ファイルに配置できます。これを行うには、関連するオプションの長い名前を、値をオプションの値に設定して、設定ファイルの opts
セクションに追加します。
{
"opts": {
"template": "templates/default", // same as -t templates/default
"encoding": "utf8", // same as -e utf8
"destination": "./out/", // same as -d ./out/
"recurse": true, // same as -r
"tutorials": "path/to/tutorials", // same as -u path/to/tutorials
}
}
source.include
オプションと opts
オプションを使用することで、JSDoc への引数のほぼすべてを設定ファイルに配置できるため、コマンドラインは次のように短縮されます。
jsdoc -c /path/to/conf.json
コマンドラインと設定ファイルの両方でオプションが指定されている場合、コマンドラインが優先されます.
タグとタグディクショナリの設定
tags
のオプションは、どの JSDoc タグが許可されるか、および各タグがどのように解釈されるかを制御します.
{
"tags": {
"allowUnknownTags": true,
"dictionaries": ["jsdoc","closure"]
}
}
tags.allowUnknownTags
プロパティは、JSDoc が認識されないタグを処理する方法に影響します。このオプションを false
に設定し、JSDoc が認識されないタグ (たとえば、@foo
) を見つけた場合、JSDoc は警告をログに記録します。デフォルトでは、このオプションは true
に設定されています。JSDoc 3.4.1 以降では、このプロパティを JSDoc が許可するタグ名の配列 (たとえば、["foo","bar"]
) に設定することもできます.
tags.dictionaries
プロパティは、JSDoc がどのタグを認識するか、および JSDoc が認識するタグをどのように解釈するかを制御します。JSDoc 3.3.0 以降では、2 つの組み込みタグディクショナリがあります.
jsdoc
: コア JSDoc タグ.closure
: Closure Compiler タグ.
デフォルトでは、両方のディクショナリが有効になっています。また、デフォルトでは、jsdoc
ディクショナリが最初にリストされます。その結果、jsdoc
ディクショナリが closure
ディクショナリとは異なる方法でタグを処理する場合、jsdoc
バージョンのタグが優先されます.
Closure Compiler プロジェクトで JSDoc を使用していて、Closure Compiler が認識しないタグの使用を避けたい場合は、tags.dictionaries
設定を ["closure"]
に変更します。また、コア JSDoc タグを許可したいが、Closure Compiler 固有のタグが Closure Compiler が解釈するのと同じように解釈されるようにしたい場合は、この設定を ["closure","jsdoc"]
に変更することもできます.
テンプレートの設定
templates
のオプションは、生成されるドキュメントの外観と内容に影響します。サードパーティのテンプレートは、これらのオプションをすべて実装しているとは限りません。デフォルトテンプレートがサポートする追加オプションについては、JSDoc のデフォルトテンプレートの設定を参照してください.
{
"templates": {
"cleverLinks": false,
"monospaceLinks": false
}
}
templates.monospaceLinks
が true の場合、インライン {@link}
タグからのすべてのリンクテキストは等幅フォントでレンダリングされます.
templates.cleverLinks
が true の場合、{@link asdf}
は、asdf
が URL の場合は通常のフォントでレンダリングされ、それ以外の場合は等幅フォントでレンダリングされます。たとえば、{@link http://github.com}
はプレーンテキストでレンダリングされますが、{@link MyNamespace.myFunction}
は等幅フォントになります.
templates.cleverLinks
が true の場合、templates.monospaceLinks
は無視されます.