UNPKG

docusaurus-plugin-llms-txt

Version:

A Docusaurus plugin for creating llms.txt and llms-full.txt files

57 lines (56 loc) 2.18 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = pluginLLMsTxt; const parseDocuments_1 = require("./parseDocuments"); const createLLMsTxtFiles_1 = require("./createLLMsTxtFiles"); const logger_1 = __importDefault(require("@docusaurus/logger")); const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const pluginName = 'docusaurus-plugin-llms-txt'; function validateOptions(options) { if (options.title === undefined) { throw new Error('title configuration for docusaurus-plugin-llms-txt is mandatory.'); } return { title: options.title || 'LLMs.txt', description: options.description || '', fullLLMsTxt: options.fullLLMsTxt || false, }; } async function writeLLMsTxtFile(llmsTxt, outDir) { const llmsTxtPath = path_1.default.join(outDir, 'llms.txt'); try { await fs_extra_1.default.outputFile(llmsTxtPath, llmsTxt); } catch (err) { logger_1.default.error('Writing llms.txt failed'); throw err; } } async function writeLLMsFullTxtFile(llmsFullTxt, outDir) { const llmsFullTxtPath = path_1.default.join(outDir, 'llms-full.txt'); try { await fs_extra_1.default.outputFile(llmsFullTxtPath, llmsFullTxt); } catch (err) { logger_1.default.error('Writing llms-full.txt failed'); throw err; } } function pluginLLMsTxt(context, options) { return { name: pluginName, async postBuild({ siteConfig, routes, outDir }) { const routesMetadata = (0, parseDocuments_1.extractRoutesMetadata)(routes, siteConfig); const llmsTxt = (0, createLLMsTxtFiles_1.generateLLMsTxt)(routesMetadata, options); writeLLMsTxtFile(llmsTxt, outDir); if (options.fullLLMsTxt) { const llmsFullTxt = (0, createLLMsTxtFiles_1.generateFullLLMsTxt)(routesMetadata, options); writeLLMsFullTxtFile(llmsFullTxt, outDir); } } }; }