From d0a9281ea3eb257f65e49071739228dabde32982 Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Mon, 12 Dec 2022 23:12:01 +0800 Subject: [PATCH] fix(env): test NODE_ENV override before expand (#11309) --- packages/vite/src/node/__tests__/env.spec.ts | 8 ++++++++ packages/vite/src/node/__tests__/env/.env.testing | 1 + packages/vite/src/node/env.ts | 11 +++++------ 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 packages/vite/src/node/__tests__/env/.env.testing diff --git a/packages/vite/src/node/__tests__/env.spec.ts b/packages/vite/src/node/__tests__/env.spec.ts index 6482e7a261714c..a229971198211b 100644 --- a/packages/vite/src/node/__tests__/env.spec.ts +++ b/packages/vite/src/node/__tests__/env.spec.ts @@ -44,6 +44,14 @@ describe('loadEnv', () => { expect(process.env.VITE_USER_NODE_ENV).toEqual(undefined) }) + test('VITE_USER_NODE_ENV for dev behaviour in build', () => { + const _nodeEnv = process.env.NODE_ENV + process.env.NODE_ENV = 'production' + loadEnv('testing', join(__dirname, './env')) + expect(process.env.VITE_USER_NODE_ENV).toEqual('development') + process.env.NODE_ENV = _nodeEnv + }) + test('Already exists VITE_USER_NODE_ENV', () => { process.env.VITE_USER_NODE_ENV = 'test' loadEnv('development', join(__dirname, './env')) diff --git a/packages/vite/src/node/__tests__/env/.env.testing b/packages/vite/src/node/__tests__/env/.env.testing new file mode 100644 index 00000000000000..083c815f94fc2d --- /dev/null +++ b/packages/vite/src/node/__tests__/env/.env.testing @@ -0,0 +1 @@ +NODE_ENV=development \ No newline at end of file diff --git a/packages/vite/src/node/env.ts b/packages/vite/src/node/env.ts index ac96844493427a..f7db1f6bc5be42 100644 --- a/packages/vite/src/node/env.ts +++ b/packages/vite/src/node/env.ts @@ -35,6 +35,11 @@ export function loadEnv( }), ) + // test NODE_ENV override before expand as otherwise process.env.NODE_ENV would override this + if (parsed.NODE_ENV && process.env.VITE_USER_NODE_ENV === undefined) { + process.env.VITE_USER_NODE_ENV = parsed.NODE_ENV + } + try { // let environment variables use each other expand({ parsed }) @@ -53,12 +58,6 @@ export function loadEnv( for (const [key, value] of Object.entries(parsed)) { if (prefixes.some((prefix) => key.startsWith(prefix))) { env[key] = value - } else if ( - key === 'NODE_ENV' && - process.env.VITE_USER_NODE_ENV === undefined - ) { - // NODE_ENV override in .env file - process.env.VITE_USER_NODE_ENV = value } }