studiocms
Version:
Astro Native CMS for AstroDB. Built from the ground up by the Astro community.
40 lines (39 loc) • 1.27 kB
JavaScript
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
};