From eacca5f30cd9afbf189e5149304c2a053f729573 Mon Sep 17 00:00:00 2001 From: Dunqing Date: Tue, 8 Nov 2022 18:14:54 +0800 Subject: [PATCH 1/6] chore(vite): support multiline values in env files --- packages/vite/package.json | 4 ++-- pnpm-lock.yaml | 17 +++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/vite/package.json b/packages/vite/package.json index 77ff7875b04740..8198d2d7203233 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -88,8 +88,8 @@ "cross-spawn": "^7.0.3", "debug": "^4.3.4", "dep-types": "link:./src/types", - "dotenv": "^14.3.2", - "dotenv-expand": "^5.1.0", + "dotenv": "^16.0.3", + "dotenv-expand": "^9.0.0", "es-module-lexer": "^1.1.0", "estree-walker": "^3.0.1", "etag": "^1.8.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a48b5f5c09e7cc..597bf0b60fbf94 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -232,8 +232,8 @@ importers: cross-spawn: ^7.0.3 debug: ^4.3.4 dep-types: link:./src/types - dotenv: ^14.3.2 - dotenv-expand: ^5.1.0 + dotenv: ^16.0.3 + dotenv-expand: ^9.0.0 es-module-lexer: ^1.1.0 esbuild: ^0.15.9 estree-walker: ^3.0.1 @@ -299,8 +299,8 @@ importers: cross-spawn: 7.0.3 debug: 4.3.4 dep-types: link:src/types - dotenv: 14.3.2 - dotenv-expand: 5.1.0 + dotenv: 16.0.3 + dotenv-expand: 9.0.0 es-module-lexer: 1.1.0 estree-walker: 3.0.1 etag: 1.8.1 @@ -4082,12 +4082,13 @@ packages: is-obj: 2.0.0 dev: true - /dotenv-expand/5.1.0: - resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + /dotenv-expand/9.0.0: + resolution: {integrity: sha512-uW8Hrhp5ammm9x7kBLR6jDfujgaDarNA02tprvZdyrJ7MpdzD1KyrIHG4l+YoC2fJ2UcdFdNWNWIjt+sexBHJw==} + engines: {node: '>=12'} dev: true - /dotenv/14.3.2: - resolution: {integrity: sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ==} + /dotenv/16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} dev: true From 85b90fc0e0f6ee10dde3f5f8b845c1e1449fbdd2 Mon Sep 17 00:00:00 2001 From: Dunqing Date: Tue, 8 Nov 2022 18:23:42 +0800 Subject: [PATCH 2/6] fix: api changed --- packages/vite/src/node/env.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/env.ts b/packages/vite/src/node/env.ts index 8d39707ddd7455..1894c9d88819e2 100644 --- a/packages/vite/src/node/env.ts +++ b/packages/vite/src/node/env.ts @@ -1,6 +1,6 @@ import fs from 'node:fs' import dotenv from 'dotenv' -import dotenvExpand from 'dotenv-expand' +import { expand } from 'dotenv-expand' import { arraify, lookupFile } from './utils' import type { UserConfig } from './config' @@ -40,11 +40,11 @@ export function loadEnv( ) // let environment variables use each other - dotenvExpand({ + expand({ parsed, // prevent process.env mutation ignoreProcessEnv: true - } as any) + }) // only keys that start with prefix are exposed to client for (const [key, value] of Object.entries(parsed)) { From ddc11bd8a17a62143bc446e92e908a939edeec47 Mon Sep 17 00:00:00 2001 From: Dunqing Date: Tue, 8 Nov 2022 18:53:28 +0800 Subject: [PATCH 3/6] fix: breaking change --- packages/vite/src/node/env.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/vite/src/node/env.ts b/packages/vite/src/node/env.ts index 1894c9d88819e2..ca283433c907f2 100644 --- a/packages/vite/src/node/env.ts +++ b/packages/vite/src/node/env.ts @@ -1,9 +1,13 @@ import fs from 'node:fs' -import dotenv from 'dotenv' +import dotenv, { config } from 'dotenv' import { expand } from 'dotenv-expand' import { arraify, lookupFile } from './utils' import type { UserConfig } from './config' +config({ + debug: process.env.DEBUG?.includes('vite:dotenv') +}) + export function loadEnv( mode: string, envDir: string, @@ -31,11 +35,7 @@ export function loadEnv( rootDir: envDir }) if (!path) return [] - return Object.entries( - dotenv.parse(fs.readFileSync(path), { - debug: process.env.DEBUG?.includes('vite:dotenv') - }) - ) + return Object.entries(dotenv.parse(fs.readFileSync(path))) }) ) From e4e906d05763a9e587eabdf89e04094a56fe51a7 Mon Sep 17 00:00:00 2001 From: Dunqing Date: Tue, 8 Nov 2022 22:10:41 +0800 Subject: [PATCH 4/6] fix: revert code --- packages/vite/src/node/env.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vite/src/node/env.ts b/packages/vite/src/node/env.ts index ca283433c907f2..8574a3e8e52eaa 100644 --- a/packages/vite/src/node/env.ts +++ b/packages/vite/src/node/env.ts @@ -1,5 +1,5 @@ import fs from 'node:fs' -import dotenv, { config } from 'dotenv' +import { config, parse } from 'dotenv' import { expand } from 'dotenv-expand' import { arraify, lookupFile } from './utils' import type { UserConfig } from './config' @@ -35,7 +35,7 @@ export function loadEnv( rootDir: envDir }) if (!path) return [] - return Object.entries(dotenv.parse(fs.readFileSync(path))) + return Object.entries(parse(fs.readFileSync(path))) }) ) From 665ccb2cfb69b9c691d90ceb9a755498807c061c Mon Sep 17 00:00:00 2001 From: bluwy Date: Tue, 29 Nov 2022 01:48:25 +0800 Subject: [PATCH 5/6] chore: remove config --- packages/vite/src/node/env.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/vite/src/node/env.ts b/packages/vite/src/node/env.ts index 8574a3e8e52eaa..6c75d6fa3fea49 100644 --- a/packages/vite/src/node/env.ts +++ b/packages/vite/src/node/env.ts @@ -1,13 +1,9 @@ import fs from 'node:fs' -import { config, parse } from 'dotenv' +import { parse } from 'dotenv' import { expand } from 'dotenv-expand' import { arraify, lookupFile } from './utils' import type { UserConfig } from './config' -config({ - debug: process.env.DEBUG?.includes('vite:dotenv') -}) - export function loadEnv( mode: string, envDir: string, From 017c018594f8432793933a28434742c5da7fe374 Mon Sep 17 00:00:00 2001 From: bluwy Date: Tue, 29 Nov 2022 01:56:51 +0800 Subject: [PATCH 6/6] chore: fix merge error --- packages/vite/src/node/env.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/vite/src/node/env.ts b/packages/vite/src/node/env.ts index 6c75d6fa3fea49..21bdb0169791ae 100644 --- a/packages/vite/src/node/env.ts +++ b/packages/vite/src/node/env.ts @@ -36,10 +36,17 @@ export function loadEnv( ) // let environment variables use each other - expand({ - parsed, + const expandParsed = expand({ + parsed: { + ...(process.env as any), + ...parsed + }, // prevent process.env mutation ignoreProcessEnv: true + }).parsed! + + Object.keys(parsed).forEach((key) => { + parsed[key] = expandParsed[key] }) // only keys that start with prefix are exposed to client