vite-plugin-robots
Version:
Vite plugin for generating robots.txt for production and development builds
38 lines (37 loc) • 1.25 kB
JavaScript
import p from "fs";
import u from "fs/promises";
import s from "path";
import r from "ansi-colors";
function m(t, i, e) {
t.logger.info(""), t.logger.info(`✨ ${r.cyan("[vite-plugin-robots]")}:`);
const o = s.parse(i.replace(t.root, "").replace(/^\//, "")), l = s.parse(e.replace(t.root, "").replace(/^\//, ""));
t.logger.info(
r.green("✓ Copied: ") + (o.dir ? r.dim(o.dir) + "/" : "") + r.blueBright(o.ext === ".local" ? o.name : o.base) + (o.ext === ".local" ? r.dim(".local") : "") + " -> " + (l.dir ? r.dim(l.dir) + "/" : "") + r.blueBright(l.base)
), t.logger.info("");
}
const d = {
robotsDir: "",
outputRobotsFileName: "robots.txt",
enableDebug: !0
};
function v(t = {}) {
const i = { ...d, ...t };
let e;
return {
name: "vite-plugin-robots",
enforce: "post",
apply: "build",
configResolved(o) {
e = o;
},
async closeBundle() {
const o = `.robots.${e.mode}.txt.local`, l = s.resolve(e.root, i.robotsDir), c = p.existsSync(s.resolve(l, o)) ? o : `.robots.${e.mode}.txt`, a = s.resolve(l, c), b = e.build.outDir, n = s.resolve(b, i.outputRobotsFileName);
await u.copyFile(a, n).then(() => {
i.enableDebug && m(e, a, n);
});
}
};
}
export {
v as robots
};