From 606e60d591646dfd9d8bf123e1dbf91891c1854a Mon Sep 17 00:00:00 2001 From: Dunqing Date: Wed, 30 Nov 2022 17:07:51 +0800 Subject: [PATCH] feat!: support multiline values in env files (#10826) Co-authored-by: bluwy close https://github.com/vitejs/vite/issues/10149 --- packages/vite/package.json | 4 ++-- packages/vite/src/node/env.ts | 14 +++++--------- pnpm-lock.yaml | 17 +++++++++-------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/packages/vite/package.json b/packages/vite/package.json index 2899ada1a5511a..d26d2e8bd16fc7 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -89,8 +89,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/packages/vite/src/node/env.ts b/packages/vite/src/node/env.ts index e611dadc0f8269..21bdb0169791ae 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 { parse } from 'dotenv' +import { expand } from 'dotenv-expand' import { arraify, lookupFile } from './utils' import type { UserConfig } from './config' @@ -31,23 +31,19 @@ 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(parse(fs.readFileSync(path))) }) ) // let environment variables use each other - const expandParsed = dotenvExpand({ + const expandParsed = expand({ parsed: { ...(process.env as any), ...parsed }, // prevent process.env mutation ignoreProcessEnv: true - } as any).parsed! + }).parsed! Object.keys(parsed).forEach((key) => { parsed[key] = expandParsed[key] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04ee15016b947b..630cec2dd51ed1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -235,8 +235,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 @@ -302,8 +302,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 @@ -4097,12 +4097,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