UNPKG

vite-plugin-react-server

Version:
61 lines (58 loc) 8.56 kB
/** * vite-plugin-react-server * Copyright (c) Nico Brinkkemper * MIT License */ import { resolveEnv } from '../config/resolveEnv.js'; import { DEFAULT_CONFIG } from '../config/defaults.js'; import { getEnvValue, setEnvValue } from './getEnvKey.js'; import { userProjectRoot } from '../root.js'; const createEnvPlugin = (_maintThreadCondition) => (_options) => { let cleanupEnv; const vitePrefix = DEFAULT_CONFIG.ENV_PREFIX; const mode = getEnvValue("MODE", vitePrefix) || "development"; cleanupEnv = resolveEnv(mode, userProjectRoot, vitePrefix); return { name: "vite:plugin-react-server/env", enforce: "post", async config(config, configEnv) { if (configEnv.isSsrBuild) { process.env["VITE_SSR"] = "true"; } return config; }, closeBundle() { if (cleanupEnv) { cleanupEnv(); } }, configureServer(server) { const envPrefix = Array.isArray(server.config.envPrefix) ? server.config.envPrefix[0] : server.config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX; const publicOrigin = getEnvValue("PUBLIC_ORIGIN", envPrefix) ?? ""; const desiredPort = server.config.server.port; let shouldUpdatePublicOrigin = false; if (publicOrigin && publicOrigin.includes(`:${desiredPort}`)) { shouldUpdatePublicOrigin = true; } if (shouldUpdatePublicOrigin) { server.httpServer?.once("listening", () => { const address = server.httpServer?.address(); if (address && typeof address !== "string") { const port = address.port; if (port !== desiredPort) { const envPrefix2 = Array.isArray(server.config.envPrefix) ? server.config.envPrefix[0] : server.config.envPrefix ?? DEFAULT_CONFIG.ENV_PREFIX; const newOrigin = publicOrigin.replace( `:${desiredPort}`, `:${port}` ); setEnvValue("PUBLIC_ORIGIN", newOrigin, envPrefix2); console.warn("PUBLIC_ORIGIN did not match the port: " + port); } } }); } } }; }; export { createEnvPlugin }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRW52UGx1Z2luLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vZW52L2NyZWF0ZUVudlBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBsdWdpbiwgVXNlckNvbmZpZyB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgeyByZXNvbHZlRW52IH0gZnJvbSBcIi4uL2NvbmZpZy9yZXNvbHZlRW52LmpzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0NPTkZJRyB9IGZyb20gXCIuLi9jb25maWcvZGVmYXVsdHMuanNcIjtcbmltcG9ydCB7IGdldEVudlZhbHVlLCBzZXRFbnZWYWx1ZSB9IGZyb20gXCIuL2dldEVudktleS5qc1wiO1xuaW1wb3J0IHsgdXNlclByb2plY3RSb290IH0gZnJvbSBcIi4uL3Jvb3QuanNcIjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUVudlBsdWdpbiA9XG4gIChfbWFpbnRUaHJlYWRDb25kaXRpb246IHN0cmluZykgPT5cbiAgKF9vcHRpb25zPzogYW55KTogUGx1Z2luID0+IHtcbiAgICBsZXQgY2xlYW51cEVudjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHZpdGVQcmVmaXggPSBERUZBVUxUX0NPTkZJRy5FTlZfUFJFRklYIGFzIHN0cmluZztcblxuICAgIC8vIFNldCB1cCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW1tZWRpYXRlbHkgd2hlbiBwbHVnaW4gaXMgY3JlYXRlZFxuICAgIGNvbnN0IG1vZGUgPSBnZXRFbnZWYWx1ZShcIk1PREVcIiwgdml0ZVByZWZpeCkgfHwgXCJkZXZlbG9wbWVudFwiO1xuICAgIGNsZWFudXBFbnYgPSByZXNvbHZlRW52KG1vZGUsIHVzZXJQcm9qZWN0Um9vdCwgdml0ZVByZWZpeCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogXCJ2aXRlOnBsdWdpbi1yZWFjdC1zZXJ2ZXIvZW52XCIsXG4gICAgICBlbmZvcmNlOiBcInBvc3RcIixcblxuICAgICAgYXN5bmMgY29uZmlnKGNvbmZpZzogVXNlckNvbmZpZywgY29uZmlnRW52KSB7XG4gICAgICAgIFxuXG4gICAgICAgIC8vIFNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBidWlsZFxuICAgICAgICBpZiAoY29uZmlnRW52LmlzU3NyQnVpbGQpIHtcbiAgICAgICAgICBwcm9jZXNzLmVudltcIlZJVEVfU1NSXCJdID0gXCJ0cnVlXCI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZW52aXJvbm1lbnQgcGx1Z2luIHNob3VsZCBub3QgZGlyZWN0bHkgY29uZmlndXJlIG91dHB1dHNcbiAgICAgICAgLy8gRWFjaCBlbnZpcm9ubWVudCBzaG91bGQgcnVuIHRocm91Z2ggcHJvcGVyIGF1dG8tZGlzY292ZXJ5IGFuZCByZXNvbHZlVXNlckNvbmZpZ1xuICAgICAgICAvLyBUT0RPOiBQcm9wZXJseSBpbnRlZ3JhdGUgd2l0aCBFbnZpcm9ubWVudCBBUEkgdG8gY3JlYXRlIHNlcGFyYXRlIGJ1aWxkIGVudmlyb25tZW50c1xuXG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICB9LFxuXG4gICAgICBjbG9zZUJ1bmRsZSgpIHtcbiAgICAgICAgLy8gQ2xlYW4gdXAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoZW4gdGhlIGJ1bmRsZSBpcyBjbG9zZWRcbiAgICAgICAgaWYgKGNsZWFudXBFbnYpIHtcbiAgICAgICAgICBjbGVhbnVwRW52KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIGNvbmZpZ3VyZVNlcnZlcihzZXJ2ZXIpIHtcbiAgICAgICAgY29uc3QgZW52UHJlZml4ID0gQXJyYXkuaXNBcnJheShzZXJ2ZXIuY29uZmlnLmVudlByZWZpeClcbiAgICAgICAgICA/IHNlcnZlci5jb25maWcuZW52UHJlZml4WzBdXG4gICAgICAgICAgOiBzZXJ2ZXIuY29uZmlnLmVudlByZWZpeCA/PyBERUZBVUxUX0NPTkZJRy5FTlZfUFJFRklYO1xuICAgICAgICBjb25zdCBwdWJsaWNPcmlnaW4gPSBnZXRFbnZWYWx1ZShcIlBVQkxJQ19PUklHSU5cIiwgZW52UHJlZml4KSA/PyBcIlwiO1xuXG4gICAgICAgIGNvbnN0IGRlc2lyZWRQb3J0ID0gc2VydmVyLmNvbmZpZy5zZXJ2ZXIucG9ydDtcbiAgICAgICAgbGV0IHNob3VsZFVwZGF0ZVB1YmxpY09yaWdpbiA9IGZhbHNlO1xuICAgICAgICBpZiAocHVibGljT3JpZ2luICYmIHB1YmxpY09yaWdpbi5pbmNsdWRlcyhgOiR7ZGVzaXJlZFBvcnR9YCkpIHtcbiAgICAgICAgICBzaG91bGRVcGRhdGVQdWJsaWNPcmlnaW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIExpc3RlbiBmb3Igd2hlbiB0aGUgc2VydmVyIGFjdHVhbGx5IHN0YXJ0c1xuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlUHVibGljT3JpZ2luKSB7XG4gICAgICAgICAgc2VydmVyLmh0dHBTZXJ2ZXI/Lm9uY2UoXCJsaXN0ZW5pbmdcIiwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IHNlcnZlci5odHRwU2VydmVyPy5hZGRyZXNzKCk7XG4gICAgICAgICAgICBpZiAoYWRkcmVzcyAmJiB0eXBlb2YgYWRkcmVzcyAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICBjb25zdCBwb3J0ID0gYWRkcmVzcy5wb3J0O1xuICAgICAgICAgICAgICBpZiAocG9ydCAhPT0gZGVzaXJlZFBvcnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnZQcmVmaXggPSBBcnJheS5pc0FycmF5KHNlcnZlci5jb25maWcuZW52UHJlZml4KVxuICAgICAgICAgICAgICAgICAgPyBzZXJ2ZXIuY29uZmlnLmVudlByZWZpeFswXVxuICAgICAgICAgICAgICAgICAgOiBzZXJ2ZXIuY29uZmlnLmVudlByZWZpeCA/PyBERUZBVUxUX0NPTkZJRy5FTlZfUFJFRklYO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld09yaWdpbiA9IHB1YmxpY09yaWdpbi5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgYDoke2Rlc2lyZWRQb3J0fWAsXG4gICAgICAgICAgICAgICAgICBgOiR7cG9ydH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBzZXRFbnZWYWx1ZShcIlBVQkxJQ19PUklHSU5cIiwgbmV3T3JpZ2luLCBlbnZQcmVmaXgpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlBVQkxJQ19PUklHSU4gZGlkIG5vdCBtYXRjaCB0aGUgcG9ydDogXCIgKyBwb3J0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH07XG4iXSwibmFtZXMiOlsiZW52UHJlZml4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBTU8sTUFBTSxlQUNYLEdBQUEsQ0FBQyxxQkFDRCxLQUFBLENBQUMsUUFBMkIsS0FBQTtBQUMxQixFQUFJLElBQUEsVUFBQTtBQUNKLEVBQUEsTUFBTSxhQUFhLGNBQWUsQ0FBQSxVQUFBO0FBR2xDLEVBQUEsTUFBTSxJQUFPLEdBQUEsV0FBQSxDQUFZLE1BQVEsRUFBQSxVQUFVLENBQUssSUFBQSxhQUFBO0FBQ2hELEVBQWEsVUFBQSxHQUFBLFVBQUEsQ0FBVyxJQUFNLEVBQUEsZUFBQSxFQUFpQixVQUFVLENBQUE7QUFFekQsRUFBTyxPQUFBO0FBQUEsSUFDTCxJQUFNLEVBQUEsOEJBQUE7QUFBQSxJQUNOLE9BQVMsRUFBQSxNQUFBO0FBQUEsSUFFVCxNQUFNLE1BQU8sQ0FBQSxNQUFBLEVBQW9CLFNBQVcsRUFBQTtBQUkxQyxNQUFBLElBQUksVUFBVSxVQUFZLEVBQUE7QUFDeEIsUUFBUSxPQUFBLENBQUEsR0FBQSxDQUFJLFVBQVUsQ0FBSSxHQUFBLE1BQUE7QUFBQTtBQU81QixNQUFPLE9BQUEsTUFBQTtBQUFBLEtBQ1Q7QUFBQSxJQUVBLFdBQWMsR0FBQTtBQUVaLE1BQUEsSUFBSSxVQUFZLEVBQUE7QUFDZCxRQUFXLFVBQUEsRUFBQTtBQUFBO0FBQ2IsS0FDRjtBQUFBLElBRUEsZ0JBQWdCLE1BQVEsRUFBQTtBQUN0QixNQUFBLE1BQU0sU0FBWSxHQUFBLEtBQUEsQ0FBTSxPQUFRLENBQUEsTUFBQSxDQUFPLE9BQU8sU0FBUyxDQUFBLEdBQ25ELE1BQU8sQ0FBQSxNQUFBLENBQU8sVUFBVSxDQUFDLENBQUEsR0FDekIsTUFBTyxDQUFBLE1BQUEsQ0FBTyxhQUFhLGNBQWUsQ0FBQSxVQUFBO0FBQzlDLE1BQUEsTUFBTSxZQUFlLEdBQUEsV0FBQSxDQUFZLGVBQWlCLEVBQUEsU0FBUyxDQUFLLElBQUEsRUFBQTtBQUVoRSxNQUFNLE1BQUEsV0FBQSxHQUFjLE1BQU8sQ0FBQSxNQUFBLENBQU8sTUFBTyxDQUFBLElBQUE7QUFDekMsTUFBQSxJQUFJLHdCQUEyQixHQUFBLEtBQUE7QUFDL0IsTUFBQSxJQUFJLGdCQUFnQixZQUFhLENBQUEsUUFBQSxDQUFTLENBQUksQ0FBQSxFQUFBLFdBQVcsRUFBRSxDQUFHLEVBQUE7QUFDNUQsUUFBMkIsd0JBQUEsR0FBQSxJQUFBO0FBQUE7QUFHN0IsTUFBQSxJQUFJLHdCQUEwQixFQUFBO0FBQzVCLFFBQU8sTUFBQSxDQUFBLFVBQUEsRUFBWSxJQUFLLENBQUEsV0FBQSxFQUFhLE1BQU07QUFDekMsVUFBTSxNQUFBLE9BQUEsR0FBVSxNQUFPLENBQUEsVUFBQSxFQUFZLE9BQVEsRUFBQTtBQUMzQyxVQUFJLElBQUEsT0FBQSxJQUFXLE9BQU8sT0FBQSxLQUFZLFFBQVUsRUFBQTtBQUMxQyxZQUFBLE1BQU0sT0FBTyxPQUFRLENBQUEsSUFBQTtBQUNyQixZQUFBLElBQUksU0FBUyxXQUFhLEVBQUE7QUFDeEIsY0FBQSxNQUFNQSxVQUFZLEdBQUEsS0FBQSxDQUFNLE9BQVEsQ0FBQSxNQUFBLENBQU8sT0FBTyxTQUFTLENBQUEsR0FDbkQsTUFBTyxDQUFBLE1BQUEsQ0FBTyxVQUFVLENBQUMsQ0FBQSxHQUN6QixNQUFPLENBQUEsTUFBQSxDQUFPLGFBQWEsY0FBZSxDQUFBLFVBQUE7QUFDOUMsY0FBQSxNQUFNLFlBQVksWUFBYSxDQUFBLE9BQUE7QUFBQSxnQkFDN0IsSUFBSSxXQUFXLENBQUEsQ0FBQTtBQUFBLGdCQUNmLElBQUksSUFBSSxDQUFBO0FBQUEsZUFDVjtBQUNBLGNBQVksV0FBQSxDQUFBLGVBQUEsRUFBaUIsV0FBV0EsVUFBUyxDQUFBO0FBQ2pELGNBQVEsT0FBQSxDQUFBLElBQUEsQ0FBSywyQ0FBMkMsSUFBSSxDQUFBO0FBQUE7QUFDOUQ7QUFDRixTQUNELENBQUE7QUFBQTtBQUNIO0FBQ0YsR0FDRjtBQUNGOzs7OyJ9