mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
## Summary - add native Turbopack support for `import.meta.env.DEV`, `PROD`, `MODE`, `BASE_URL`, and `SSR` - statically analyze built-in values for dead-code elimination while exposing the complete runtime object - derive `BASE_URL` from the Next.js `basePath` and include Vite-compatible trailing-slash formatting - add TypeScript declarations, focused execution and Next.js integration coverage, and Vite migration documentation ## Verification - `cargo fmt --all -- --check` - `cargo nextest run -p turbopack-tests -E 'test(import_meta_env)'` - `pnpm build-all` - `pnpm --filter=next types` - `NEXT_TEST_PREFER_OFFLINE=1 pnpm test-dev-turbo test/e2e/import-meta-env/import-meta-env.test.ts` - `NEXT_TEST_PREFER_OFFLINE=1 pnpm test-start-turbo test/e2e/import-meta-env/import-meta-env.test.ts` <!-- NEXT_JS_LLM -->
32 lines
695 B
TypeScript
32 lines
695 B
TypeScript
'use client'
|
|
|
|
import { useEffect, useState } from 'react'
|
|
|
|
const env = import.meta.env
|
|
const { DEV, PROD, MODE, BASE_URL, SSR } = env
|
|
const bracketMode = import.meta.env['MODE']
|
|
const unknown = (env as unknown as Record<string, unknown>).UNKNOWN
|
|
|
|
export function ClientEnv() {
|
|
const [mounted, setMounted] = useState(false)
|
|
|
|
useEffect(() => {
|
|
setMounted(true)
|
|
}, [])
|
|
|
|
if (!mounted) {
|
|
return <div id="client-env-pending" />
|
|
}
|
|
|
|
return (
|
|
<dl id="client-env">
|
|
<dt>env</dt>
|
|
<dd>{JSON.stringify({ DEV, PROD, MODE, BASE_URL, SSR })}</dd>
|
|
<dt>bracket-mode</dt>
|
|
<dd>{bracketMode}</dd>
|
|
<dt>unknown</dt>
|
|
<dd>{String(unknown)}</dd>
|
|
</dl>
|
|
)
|
|
}
|