docusaurus-plugin-llms-txt
Version:
A Docusaurus plugin for creating llms.txt and llms-full.txt files
57 lines (56 loc) • 2.18 kB
JavaScript
;
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);
}
}
};
}