diff --git a/packages/astro/src/core/create-vite.ts b/packages/astro/src/core/create-vite.ts
index 7b6653980..b49f664dc 100644
--- a/packages/astro/src/core/create-vite.ts
+++ b/packages/astro/src/core/create-vite.ts
@@ -55,6 +55,7 @@ export async function createVite(inlineConfig: ViteConfigWithSSR, { astroConfig,
],
publicDir: fileURLToPath(astroConfig.public),
root: fileURLToPath(astroConfig.projectRoot),
+ envPrefix: 'PUBLIC_',
server: {
force: true, // force dependency rebuild (TODO: enabled only while next is unstable; eventually only call in "production" mode?)
hmr: process.env.NODE_ENV === 'test' || process.env.NODE_ENV === 'production' ? false : undefined, // disable HMR for test
diff --git a/packages/astro/test/astro-envs.test.js b/packages/astro/test/astro-envs.test.js
new file mode 100644
index 000000000..d8c7a3a8c
--- /dev/null
+++ b/packages/astro/test/astro-envs.test.js
@@ -0,0 +1,23 @@
+import { expect } from 'chai';
+import { loadFixture } from './test-utils.js';
+
+describe('Environment Variables', () => {
+ let fixture;
+
+ before(async () => {
+ fixture = await loadFixture({ projectRoot: './fixtures/astro-envs/' });
+
+ await fixture.build();
+ });
+
+ it('builds without throwing', async () => {
+ expect(true).to.equal(true);
+ });
+
+ it('does render public env, does not render private env', async () => {
+ let indexHtml = await fixture.readFile('/index.html');
+
+ expect(indexHtml).to.not.include('CLUB_33');
+ expect(indexHtml).to.include('BLUE_BAYOU');
+ });
+});
diff --git a/packages/astro/test/fixtures/astro-envs/.env b/packages/astro/test/fixtures/astro-envs/.env
new file mode 100644
index 000000000..e0587fe3f
--- /dev/null
+++ b/packages/astro/test/fixtures/astro-envs/.env
@@ -0,0 +1,2 @@
+SECRET_PLACE=CLUB_33
+PUBLIC_PLACE=BLUE_BAYOU
diff --git a/packages/astro/test/fixtures/astro-envs/.gitignore b/packages/astro/test/fixtures/astro-envs/.gitignore
new file mode 100644
index 000000000..8e0776e8d
--- /dev/null
+++ b/packages/astro/test/fixtures/astro-envs/.gitignore
@@ -0,0 +1 @@
+!.env
diff --git a/packages/astro/test/fixtures/astro-envs/src/pages/index.astro b/packages/astro/test/fixtures/astro-envs/src/pages/index.astro
new file mode 100644
index 000000000..9dc6a380e
--- /dev/null
+++ b/packages/astro/test/fixtures/astro-envs/src/pages/index.astro
@@ -0,0 +1,2 @@
+{import.meta.env.PUBLIC_PLACE}
+{import.meta.env.SECRET_PLACE}