UNPKG

vite-plugin-kirby

Version:
108 lines (106 loc) 4.2 kB
"use strict"; 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(); } }; };