UNPKG

docusaurus-plugin-typedoc

Version:

A Docusaurus plugin to integrate TypeDoc ( + typedoc-plugin-markdown ) into the Docusaurus CLI.

41 lines (40 loc) 1.7 kB
import * as fs from 'fs'; import { getPluginOptions } from './options.js'; export default async function pluginDocusaurus(context, opts) { await generateTypedoc(context, opts); return { name: 'docusaurus-plugin-typedoc', extendCli(cli) { cli .command('generate-typedoc') .description(`[docusaurus-plugin-typedoc] Generate TypeDoc docs independently of the Docusaurus build process.`) .action(async () => { context.siteConfig?.plugins?.forEach((pluginConfig) => { // Check PluginConfig is typed to ['docusaurus-plugin-typedoc', PluginOptions] if (pluginConfig && typeof pluginConfig[0] === 'string' && pluginConfig[0].includes('docusaurus-plugin-typedoc') && typeof pluginConfig[1] === 'object') { generateTypedoc(context, pluginConfig[1]); } }); }); }, }; } /** * Initiates a new typedoc Application bootstrapped with plugin options */ async function generateTypedoc(context, opts) { // get plugin options const options = getPluginOptions(context, opts); // eslint-disable-next-line @typescript-eslint/no-unused-vars const { id, ...typedocOptions } = options; // create outDir if it doesn't exist if (!fs.existsSync(typedocOptions.out)) { fs.mkdirSync(typedocOptions.out, { recursive: true }); } // Bootstrap typedoc with options (this mimics the TypeDoc CLI) const typedoc = await import('./typedoc.cjs'); await typedoc.bootstrap(typedocOptions); }