UNPKG

rp-markdown-docs

Version:

A modern, beautiful documentation generator that converts markdown files into interactive HTML documentation sites

60 lines 2.42 kB
import fs from 'fs-extra'; import path from 'path'; import chalk from 'chalk'; import ora from 'ora'; import chokidar from 'chokidar'; import { DocumentationGenerator } from '../../generator/DocumentationGenerator.js'; export async function generateDocs(input = './docs', options) { const spinner = ora('Generating documentation...').start(); try { const inputDir = path.resolve(input); const outputDir = path.resolve(options.output || './docs-output'); const configFile = path.resolve(options.config || './mdocs.config.js'); // Load configuration let config = {}; if (await fs.pathExists(configFile)) { const configModule = await import(configFile); config = configModule.default || configModule; } const generator = new DocumentationGenerator({ inputDir, outputDir, baseUrl: options.baseUrl || '/', ...config }); await generator.generate(); spinner.succeed(chalk.green('Documentation generated successfully!')); console.log(chalk.blue('Output directory:'), chalk.cyan(outputDir)); if (options.watch) { console.log(chalk.yellow('\nWatching for changes...')); const watcher = chokidar.watch(inputDir, { ignored: /node_modules/, persistent: true }); watcher.on('change', async (filePath) => { console.log(chalk.gray(`File changed: ${path.relative(inputDir, filePath)}`)); const regenerateSpinner = ora('Regenerating...').start(); try { await generator.generate(); regenerateSpinner.succeed(chalk.green('Regenerated successfully!')); } catch (error) { regenerateSpinner.fail(chalk.red('Regeneration failed')); console.error(error); } }); // Keep the process running process.on('SIGINT', () => { console.log(chalk.yellow('\nStopping watcher...')); watcher.close(); process.exit(0); }); } } catch (error) { spinner.fail(chalk.red('Failed to generate documentation')); console.error(error); process.exit(1); } } //# sourceMappingURL=generate.js.map