Skip to content

Commit 0f6de4d

Browse files
authoredMar 8, 2023
fix(define): correctly replace SSR in dev (#12204)
1 parent 4433c30 commit 0f6de4d

File tree

2 files changed

+31
-15
lines changed

2 files changed

+31
-15
lines changed
 

‎packages/vite/src/node/plugins/define.ts

+29-13
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export function definePlugin(config: ResolvedConfig): Plugin {
4646
// stringified for `import.meta.env`, we can remove the quotes and
4747
// retain being an identifier
4848
typeof val === 'string' && /^[\p{L}_$]/u.test(val.trim())
49-
? `__vite__${val}__vite__`
49+
? `__vite__define__${val}`
5050
: val
5151
}
5252
}
@@ -56,34 +56,50 @@ export function definePlugin(config: ResolvedConfig): Plugin {
5656
const importMetaKeys: Record<string, string> = {}
5757
const importMetaFallbackKeys: Record<string, string> = {}
5858
if (isBuild) {
59-
const env: Record<string, any> = {
60-
...config.env,
61-
SSR: !!config.build.ssr,
62-
}
6359
// set here to allow override with config.define
6460
importMetaKeys['import.meta.hot'] = `undefined`
65-
for (const key in env) {
66-
importMetaKeys[`import.meta.env.${key}`] = JSON.stringify(env[key])
61+
for (const key in config.env) {
62+
importMetaKeys[`import.meta.env.${key}`] = JSON.stringify(config.env[key])
6763
}
6864
Object.assign(importMetaFallbackKeys, {
6965
'import.meta.env.': `({}).`,
70-
'import.meta.env': JSON.stringify({ ...env, ...userDefineEnv }).replace(
71-
/"__vite__(.+?)__vite__"/g,
72-
(_, val) => val,
73-
),
66+
'import.meta.env': JSON.stringify({
67+
...config.env,
68+
SSR: '__vite__ssr__',
69+
...userDefineEnv,
70+
}).replace(/"__vite__define__(.+?)"/g, (_, val) => val),
7471
})
7572
}
7673

74+
function getImportMetaKeys(ssr: boolean): Record<string, string> {
75+
if (!isBuild) return {}
76+
return {
77+
...importMetaKeys,
78+
'import.meta.env.SSR': ssr + '',
79+
}
80+
}
81+
82+
function getImportMetaFallbackKeys(ssr: boolean): Record<string, string> {
83+
if (!isBuild) return {}
84+
return {
85+
...importMetaFallbackKeys,
86+
'import.meta.env': importMetaFallbackKeys['import.meta.env'].replace(
87+
'"__vite__ssr__"',
88+
ssr + '',
89+
),
90+
}
91+
}
92+
7793
function generatePattern(
7894
ssr: boolean,
7995
): [Record<string, string | undefined>, RegExp | null] {
8096
const replaceProcessEnv = !ssr || config.ssr?.target === 'webworker'
8197

8298
const replacements: Record<string, string> = {
8399
...(replaceProcessEnv ? processNodeEnv : {}),
84-
...importMetaKeys,
100+
...getImportMetaKeys(ssr),
85101
...userDefine,
86-
...importMetaFallbackKeys,
102+
...getImportMetaFallbackKeys(ssr),
87103
...(replaceProcessEnv ? processEnv : {}),
88104
}
89105

‎packages/vite/src/node/plugins/importAnalysis.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin {
171171
if (!_env) {
172172
_env = `import.meta.env = ${JSON.stringify({
173173
...config.env,
174-
SSR: '__vite__ssr__vite__',
174+
SSR: '__vite__ssr__',
175175
})};`
176176
// account for user env defines
177177
for (const key in config.define) {
@@ -183,7 +183,7 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin {
183183
}
184184
}
185185
}
186-
return _env.replace('"__vite__ssr__vite__"', ssr + '')
186+
return _env.replace('"__vite__ssr__"', ssr + '')
187187
}
188188

189189
return {

0 commit comments

Comments
 (0)
Please sign in to comment.