Skip to content

Commit ec401da

Browse files
authoredNov 29, 2023
fix(define): allow define process.env (#15173)
1 parent 642f9bc commit ec401da

File tree

4 files changed

+11
-5
lines changed

4 files changed

+11
-5
lines changed
 

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

+1-5
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,12 @@ export function definePlugin(config: ResolvedConfig): Plugin {
1414

1515
// ignore replace process.env in lib build
1616
const processEnv: Record<string, string> = {}
17-
const processNodeEnv: Record<string, string> = {}
1817
if (!isBuildLib) {
1918
const nodeEnv = process.env.NODE_ENV || config.mode
2019
Object.assign(processEnv, {
2120
'process.env': `{}`,
2221
'global.process.env': `{}`,
2322
'globalThis.process.env': `{}`,
24-
})
25-
Object.assign(processNodeEnv, {
2623
'process.env.NODE_ENV': JSON.stringify(nodeEnv),
2724
'global.process.env.NODE_ENV': JSON.stringify(nodeEnv),
2825
'globalThis.process.env.NODE_ENV': JSON.stringify(nodeEnv),
@@ -60,11 +57,10 @@ export function definePlugin(config: ResolvedConfig): Plugin {
6057
const replaceProcessEnv = !ssr || config.ssr?.target === 'webworker'
6158

6259
const define: Record<string, string> = {
63-
...(replaceProcessEnv ? processNodeEnv : {}),
60+
...(replaceProcessEnv ? processEnv : {}),
6461
...importMetaKeys,
6562
...userDefine,
6663
...importMetaFallbackKeys,
67-
...(replaceProcessEnv ? processEnv : {}),
6864
}
6965

7066
// Additional define fixes based on `ssr` value

‎playground/define/__tests__/define.spec.ts

+3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ test('string', async () => {
1919
expect(await page.textContent('.process-node-env')).toBe(
2020
JSON.parse(defines['process.env.NODE_ENV']),
2121
)
22+
expect(await page.textContent('.process-env')).toBe(
23+
JSON.stringify(defines['process.env'], null, 2),
24+
)
2225
expect(await page.textContent('.env-var')).toBe(
2326
JSON.parse(defines['process.env.SOMEVAR']),
2427
)

‎playground/define/index.html

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ <h1>Define</h1>
1010
<p>Object <span class="pre object"></span></p>
1111
<p>Env Var <code class="env-var"></code></p>
1212
<p>process node env: <code class="process-node-env"></code></p>
13+
<p>process env: <code class="process-env"></code></p>
1314
<p>process as property: <code class="process-as-property"></code></p>
1415
<p>spread object: <code class="spread-object"></code></p>
1516
<p>spread array: <code class="spread-array"></code></p>
@@ -68,6 +69,7 @@ <h2>Define replaces constants in template literal expressions</h2>
6869
text('.undefined', __UNDEFINED__)
6970
text('.object', JSON.stringify(__OBJ__, null, 2))
7071
text('.process-node-env', process.env.NODE_ENV)
72+
text('.process-env', JSON.stringify(process.env, null, 2))
7173
text('.env-var', process.env.SOMEVAR)
7274
text('.process-as-property', __OBJ__.process.env.SOMEVAR)
7375
text(

‎playground/define/vite.config.js

+5
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ export default defineConfig({
2020
},
2121
'process.env.NODE_ENV': '"dev"',
2222
'process.env.SOMEVAR': '"SOMEVAR"',
23+
'process.env': {
24+
NODE_ENV: 'dev',
25+
SOMEVAR: 'SOMEVAR',
26+
OTHER: 'works',
27+
},
2328
$DOLLAR: 456,
2429
ÖUNICODE_LETTERɵ: 789,
2530
__VAR_NAME__: false,

0 commit comments

Comments
 (0)
Please sign in to comment.