vite-plugin-kirby
Version:
108 lines (106 loc) • 4.2 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var index_exports = {};
__export(index_exports, {
default: () => index_default
});
module.exports = __toCommonJS(index_exports);
var import_node_path = require("path");
var import_promises = require("fs/promises");
var import_vite_plugin_live_reload = require("vite-plugin-live-reload");
var phpConfigTemplate = (config) => `<?php
// This is an auto-generated file. Please avoid making changes here.
// Configure your settings in the "vite.config.js" file instead.
return [
${Object.entries(config).filter(([, value]) => value !== void 0).map(([key, value]) => {
if (typeof value === "string") value = `'${value}'`;
return ` '${key}' => ${value}`;
}).join(",\n")}
];`;
var exitHandlersRegistered = false;
var index_default = ({
watch = true,
devDir = process.cwd(),
kirbyConfigDir = "site/config"
} = {}) => {
const devPath = (0, import_node_path.resolve)(devDir, ".dev");
const removeDevFile = () => (0, import_promises.unlink)(devPath).catch((_e) => {
});
return {
name: "vite-plugin-kirby",
config({ build }) {
return { build: { manifest: build?.manifest || true } };
},
async configResolved({ build, plugins, root }) {
let { outDir, assetsDir } = build;
outDir = (0, import_node_path.relative)(process.cwd(), (0, import_node_path.resolve)(root, outDir));
outDir = outDir.replace(/\//g, import_node_path.sep);
const file = `${kirbyConfigDir}/vite.config.php`;
const legacy = !!plugins.find((v) => v.name === "vite:legacy-config");
const manifest = typeof build.manifest === "string" ? build.manifest : void 0;
const rootDir = (0, import_node_path.relative)(process.cwd(), root) || void 0;
const config = phpConfigTemplate({
rootDir,
outDir,
assetsDir,
legacy,
manifest
});
try {
await (0, import_promises.access)(file);
const oldConfig = await (0, import_promises.readFile)(file, "utf-8");
if (config !== oldConfig) await (0, import_promises.writeFile)(file, config);
} catch (err) {
await (0, import_promises.mkdir)(kirbyConfigDir, { recursive: true });
await (0, import_promises.writeFile)(file, config);
}
},
configureServer(server) {
const { config } = server;
server.httpServer?.once("listening", () => {
if (!config.server.origin) {
const { https, port, host = "localhost" } = config.server;
const resolvedHost = host === true ? "0.0.0.0" : host;
const protocol = https ? "https" : "http";
config.server.origin = `${protocol}://${resolvedHost}:${port}`;
}
(0, import_promises.writeFile)(devPath, `VITE_SERVER=${config.server.origin}`);
});
if (!exitHandlersRegistered) {
process.on("exit", removeDevFile);
process.on("SIGINT", process.exit);
process.on("SIGTERM", process.exit);
process.on("SIGHUP", process.exit);
exitHandlersRegistered = true;
}
if (watch) {
const defaultPaths = [
"../site/(templates|snippets|controllers|models|layouts)/**/*.php",
"../content/**/*"
];
const paths = watch === true ? defaultPaths : watch;
(0, import_vite_plugin_live_reload.liveReload)(paths).configureServer(server);
}
},
buildStart() {
removeDevFile();
}
};
};