Skip to content

Commit 00d9992

Browse files
committed
fix(optimizer): keep NODE_ENV as-is when keepProcessEnv is true
1 parent 7a0758c commit 00d9992

2 files changed

Lines changed: 27 additions & 4 deletions

File tree

packages/vite/src/node/optimizer/index.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -775,9 +775,11 @@ async function prepareEsbuildOptimizerRun(
775775
if (optimizerContext.cancelled) return { context: undefined, idToExports }
776776

777777
const define = {
778-
'process.env.NODE_ENV': JSON.stringify(
779-
process.env.NODE_ENV || environment.config.mode,
780-
),
778+
'process.env.NODE_ENV': environment.config.keepProcessEnv
779+
? // define process.env.NODE_ENV even for keepProcessEnv === true
780+
// as esbuild will replace it automatically when `platform` is `'browser'`
781+
'process.env.NODE_ENV'
782+
: JSON.stringify(process.env.NODE_ENV || environment.config.mode),
781783
}
782784

783785
const platform =
@@ -1210,7 +1212,9 @@ function getConfigHash(environment: Environment): string {
12101212
const { optimizeDeps } = config
12111213
const content = JSON.stringify(
12121214
{
1213-
mode: process.env.NODE_ENV || config.mode,
1215+
define: config.keepProcessEnv
1216+
? process.env.NODE_ENV || config.mode
1217+
: null,
12141218
root: config.root,
12151219
resolve: config.resolve,
12161220
assetsInclude: config.assetsInclude,

playground/environment-react-ssr/__tests__/environment-react-ssr.spec.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,25 @@ describe.runIf(!isBuild)('pre-bundling', () => {
4040
expect(metaJson.optimized['react/jsx-dev-runtime']).toBeTruthy()
4141

4242
expect(metaJson.optimized['react-dom/client']).toBeFalsy()
43+
44+
// process.env.NODE_ENV should be kept as keepProcessEnv is true
45+
const depsFiles = fs
46+
.readdirSync(path.resolve(testDir, 'node_modules/.vite/deps_ssr'), {
47+
withFileTypes: true,
48+
})
49+
.filter((file) => file.isFile() && file.name.endsWith('.js'))
50+
.map((file) => path.join(file.parentPath, file.name))
51+
const depsFileHasProcessEnvNodeEnvLeft = depsFiles
52+
.filter((file) =>
53+
fs.readFileSync(file, 'utf-8').includes('process.env.NODE_ENV'),
54+
)
55+
.map((file) =>
56+
path.relative(
57+
path.resolve(testDir, 'node_modules/.vite/deps_ssr'),
58+
file,
59+
),
60+
)
61+
expect(depsFileHasProcessEnvNodeEnvLeft.length).toBeGreaterThan(0)
4362
})
4463

4564
test('deps reload', async () => {

0 commit comments

Comments
 (0)