UNPKG

studiocms

Version:

Astro Native CMS for AstroDB. Built from the ground up by the Astro community.

40 lines (39 loc) 1.27 kB
import fs from "node:fs"; import { fileURLToPath } from "node:url"; import { generateContent, printInfo } from "./core.js"; import { RobotsTXTConfigSchema } from "./schema.js"; import { getFileSizeInKilobytes, measureExecutionTime } from "./utils.js"; function createRobotsIntegration(options) { let astroConfig; let finalSiteMapHref; let executionTime; const config = RobotsTXTConfigSchema.parse(options); return { name: "studiocms/robotstxt", hooks: { /* v8 ignore start */ "astro:config:setup": ({ config: cfg }) => { astroConfig = cfg; }, "astro:build:start": () => { finalSiteMapHref = new URL(astroConfig.base, astroConfig.site).href; }, "astro:build:done": async ({ dir, logger }) => { executionTime = measureExecutionTime(() => { fs.writeFileSync( new URL("robots.txt", dir), generateContent(config, finalSiteMapHref, logger), "utf-8" ); }); const fileSize = getFileSizeInKilobytes(new URL("robots.txt", dir)); const destDir = fileURLToPath(dir); printInfo(fileSize, executionTime, logger, destDir); } /* v8 ignore stop */ } }; } export { createRobotsIntegration as default };