File tree Expand file tree Collapse file tree
packages/vite/src/node/optimizer
playground/environment-react-ssr/__tests__ Expand file tree Collapse file tree Original file line number Diff line number Diff 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 ,
Original file line number Diff line number Diff 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 ( ) => {
You can’t perform that action at this time.
0 commit comments