diff --git a/waspc/data/Generator/templates/react-app/plugins/validateEnv.ts b/waspc/data/Generator/templates/react-app/plugins/validateEnv.ts
new file mode 100644
index 0000000000..6c13d96c48
--- /dev/null
+++ b/waspc/data/Generator/templates/react-app/plugins/validateEnv.ts
@@ -0,0 +1,14 @@
+import { type Plugin, loadEnv } from "vite";
+
+import { ensureEnvSchema } from 'wasp/env'
+import { clientEnvSchema } from 'wasp/client/env/schema'
+
+export function validateEnv(): Plugin {
+ return {
+ name: 'wasp-validate-env',
+ config: (config) => {
+ const env = loadEnv(config.mode, process.cwd(), config.envPrefix)
+ ensureEnvSchema(env, clientEnvSchema)
+ },
+ };
+}
diff --git a/waspc/data/Generator/templates/react-app/tsconfig.node.json b/waspc/data/Generator/templates/react-app/tsconfig.node.json
index d90bb30d80..3b1dd9cea2 100644
--- a/waspc/data/Generator/templates/react-app/tsconfig.node.json
+++ b/waspc/data/Generator/templates/react-app/tsconfig.node.json
@@ -6,5 +6,5 @@
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true
},
- "include": ["vite.config.ts", "./src/ext-src/vite.config.ts"]
+ "include": ["vite.config.ts", "./src/ext-src/vite.config.ts", "./plugins/"]
}
diff --git a/waspc/data/Generator/templates/react-app/vite.config.ts b/waspc/data/Generator/templates/react-app/vite.config.ts
index db6b6453db..3434be3077 100644
--- a/waspc/data/Generator/templates/react-app/vite.config.ts
+++ b/waspc/data/Generator/templates/react-app/vite.config.ts
@@ -1,11 +1,10 @@
{{={= =}=}}
///
-import { mergeConfig, type Plugin, loadEnv } from "vite";
+import { mergeConfig } from "vite";
import react from "@vitejs/plugin-react";
import { defaultExclude } from "vitest/config"
-import { ensureEnvSchema } from 'wasp/dev'
-import { clientEnvSchema } from 'wasp/client/env/schema'
+import { validateEnv } from "./plugins/validateEnv.js";
{=# customViteConfig.isDefined =}
// Ignoring the TS error because we are importing a file outside of TS root dir.
@@ -20,8 +19,8 @@ const _waspUserProvidedConfig = {};
const defaultViteConfig = {
base: "{= baseDir =}",
plugins: [
- react(),
validateEnv(),
+ react(),
],
optimizeDeps: {
exclude: ['wasp']
@@ -59,13 +58,3 @@ export default mergeConfig(
defaultViteConfig,
_waspUserProvidedConfig
);
-
-function validateEnv(): Plugin {
- return {
- name: 'wasp-validate-env',
- config: (config) => {
- const env = loadEnv(config.mode, process.cwd(), config.envPrefix)
- ensureEnvSchema(env, clientEnvSchema)
- },
- };
-}
diff --git a/waspc/data/Generator/templates/sdk/wasp/client/env/schema.ts b/waspc/data/Generator/templates/sdk/wasp/client/env/schema.ts
index 71ecc87f0f..29ab2d679d 100644
--- a/waspc/data/Generator/templates/sdk/wasp/client/env/schema.ts
+++ b/waspc/data/Generator/templates/sdk/wasp/client/env/schema.ts
@@ -1,7 +1,7 @@
{{={= =}=}}
import * as z from 'zod'
-// PRIVATE API (SDK, Vite config)
+// PRIVATE API (sdk, Vite config)
export const clientEnvSchema = z.object({
REACT_APP_API_URL: z
.string()
diff --git a/waspc/data/Generator/templates/sdk/wasp/dev/index.ts b/waspc/data/Generator/templates/sdk/wasp/dev/index.ts
index bccbfb2adb..e9bd93f7da 100644
--- a/waspc/data/Generator/templates/sdk/wasp/dev/index.ts
+++ b/waspc/data/Generator/templates/sdk/wasp/dev/index.ts
@@ -15,5 +15,3 @@ import { join as joinPaths } from 'path'
export function resolveProjectPath(path: string): string {
return joinPaths('../../../', path)
}
-
-export { ensureEnvSchema } from '../env/index.js'
diff --git a/waspc/data/Generator/templates/sdk/wasp/env/index.ts b/waspc/data/Generator/templates/sdk/wasp/env/index.ts
index 9d81bd80bf..92402b11dd 100644
--- a/waspc/data/Generator/templates/sdk/wasp/env/index.ts
+++ b/waspc/data/Generator/templates/sdk/wasp/env/index.ts
@@ -2,6 +2,7 @@ import * as z from 'zod'
const redColor = '\x1b[31m'
+// PRIVATE API (SDK, Vite config)
export function ensureEnvSchema(
data: unknown,
schema: Schema
diff --git a/waspc/data/Generator/templates/sdk/wasp/package.json b/waspc/data/Generator/templates/sdk/wasp/package.json
index 9155ef49fa..84e2be6777 100644
--- a/waspc/data/Generator/templates/sdk/wasp/package.json
+++ b/waspc/data/Generator/templates/sdk/wasp/package.json
@@ -109,6 +109,7 @@
"./client/test": "./dist/client/test/index.js",
"./client": "./dist/client/index.js",
"./client/env/schema": "./dist/client/env/schema.js",
+ "./env": "./dist/env/index.js",
"./dev": "./dist/dev/index.js",
{=! todo(filip): Fixes below are for type errors in 0.13.1, remove ASAP =}
diff --git a/waspc/src/Wasp/Generator/WebAppGenerator.hs b/waspc/src/Wasp/Generator/WebAppGenerator.hs
index 2f896c4f4c..95410c1385 100644
--- a/waspc/src/Wasp/Generator/WebAppGenerator.hs
+++ b/waspc/src/Wasp/Generator/WebAppGenerator.hs
@@ -71,6 +71,8 @@ genWebApp spec = do
genNpmrc,
genGitignore,
genIndexHtml spec,
+ -- Vite plugins
+ genFileCopy [relfile|plugins/validateEnv.ts|],
genViteConfig spec
]
<++> genSrcDir spec