Skip to content

Commit 1abffcb

Browse files
committed
fix vite config template
1 parent db23825 commit 1abffcb

File tree

2 files changed

+75
-15
lines changed

2 files changed

+75
-15
lines changed

reflex/compiler/templates.py

Lines changed: 74 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -521,18 +521,80 @@ def _vite_config_template(**kwargs):
521521
"""
522522
base = kwargs.get("base", "/")
523523

524-
# Generate assetsDir from base path
525-
# Remove trailing slash, add /assets, then .slice(1) to remove leading slash
526-
assets_path = base.rstrip("/") + "/assets"
527-
528-
return f"""import {{ defineConfig }} from 'vite'
529-
import react from '@vitejs/plugin-react'
530-
531-
export default defineConfig({{
532-
plugins: [react()],
533-
base: "{base}",
534-
assetsDir: "{assets_path}".slice(1),
535-
}})"""
524+
return rf"""import {{ fileURLToPath, URL }} from "url";
525+
import {{ reactRouter }} from "@react-router/dev/vite";
526+
import {{ defineConfig }} from "vite";
527+
import safariCacheBustPlugin from "./vite-plugin-safari-cachebust";
528+
529+
// Ensure that bun always uses the react-dom/server.node functions.
530+
function alwaysUseReactDomServerNode() {{
531+
return {{
532+
name: "vite-plugin-always-use-react-dom-server-node",
533+
enforce: "pre",
534+
535+
resolveId(source, importer) {{
536+
if (
537+
typeof importer === "string" &&
538+
importer.endsWith("/entry.server.node.tsx") &&
539+
source.includes("react-dom/server")
540+
) {{
541+
return this.resolve("react-dom/server.node", importer, {{
542+
skipSelf: true,
543+
}});
544+
}}
545+
return null;
546+
}},
547+
}};
548+
}}
549+
550+
export default defineConfig((config) => ({{
551+
plugins: [
552+
alwaysUseReactDomServerNode(),
553+
reactRouter(),
554+
safariCacheBustPlugin(),
555+
],
556+
build: {{
557+
assetsDir: "{base}assets".slice(1),
558+
rollupOptions: {{
559+
jsx: {{}},
560+
output: {{
561+
advancedChunks: {{
562+
groups: [
563+
{{
564+
test: /env.json/,
565+
name: "reflex-env",
566+
}},
567+
],
568+
}},
569+
}},
570+
}},
571+
}},
572+
experimental: {{
573+
enableNativePlugin: false,
574+
}},
575+
server: {{
576+
port: process.env.PORT,
577+
watch: {{
578+
ignored: [
579+
"**/.web/backend/**",
580+
"**/.web/reflex.install_frontend_packages.cached",
581+
],
582+
}},
583+
}},
584+
resolve: {{
585+
mainFields: ["browser", "module", "jsnext"],
586+
alias: [
587+
{{
588+
find: "$",
589+
replacement: fileURLToPath(new URL("./", import.meta.url)),
590+
}},
591+
{{
592+
find: "@",
593+
replacement: fileURLToPath(new URL("./public", import.meta.url)),
594+
}},
595+
],
596+
}},
597+
}}));"""
536598

537599

538600
def _stateful_component_template(**kwargs):

reflex/custom_components/custom_components.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,7 @@ def _init_template(module_name: str) -> str:
164164
return f"from .{module_name} import *"
165165

166166

167-
def _demo_app_template(
168-
custom_component_module_dir: str, module_name: str
169-
) -> str:
167+
def _demo_app_template(custom_component_module_dir: str, module_name: str) -> str:
170168
"""Template for custom components demo app.
171169
172170
Args:

0 commit comments

Comments
 (0)