1 | exports.onHandlePlugins = function(ev) {
|
2 | const option = ev.data.option || {};
|
3 | const plugins = [
|
4 | {name: 'esdoc-lint-plugin', option: {enable: option.lint}},
|
5 | {name: 'esdoc-coverage-plugin', option: {enable: option.coverage}},
|
6 | {name: 'esdoc-accessor-plugin', option: {access: option.access, autoPrivate: option.autoPrivate}},
|
7 | {name: 'esdoc-type-inference-plugin', option: {enable: option.typeInference}},
|
8 | {name: 'esdoc-external-ecmascript-plugin'},
|
9 | {name: 'esdoc-brand-plugin', option: {title: option.title, repository: option.repository}},
|
10 | {name: 'esdoc-undocumented-identifier-plugin', option: {enable: option.undocumentIdentifier}},
|
11 | {name: 'esdoc-unexported-identifier-plugin', option: {enable: option.unexportedIdentifier}},
|
12 | {name: 'esdoc-integrate-manual-plugin', option: option.manual},
|
13 | {name: 'esdoc-integrate-test-plugin', option: option.test},
|
14 | {name: 'esdoc-publish-html-plugin'}
|
15 | ];
|
16 |
|
17 | const existPluginNames = ev.data.plugins.map(plugin => plugin.name);
|
18 | for (const plugin of plugins) {
|
19 | if (existPluginNames.includes(plugin.name)) continue;
|
20 | cleanOption(plugin.option);
|
21 | ev.data.plugins.push(plugin);
|
22 | }
|
23 | };
|
24 |
|
25 |
|
26 | function cleanOption(option) {
|
27 | if (!option) return;
|
28 |
|
29 | for (const key of Object.keys(option)) {
|
30 | if (option[key] === undefined) delete option[key];
|
31 | }
|
32 | }
|