diff --git a/packages/next-env/index.ts b/packages/next-env/index.ts index 343e80251879..97df9677629d 100644 --- a/packages/next-env/index.ts +++ b/packages/next-env/index.ts @@ -2,7 +2,7 @@ import * as fs from 'fs' import * as path from 'path' import * as dotenv from 'dotenv' -import dotenvExpand from 'dotenv-expand' +import { expand as dotenvExpand } from 'dotenv-expand' export type Env = { [key: string]: string } export type LoadedEnvFiles = Array<{ diff --git a/packages/next-env/package.json b/packages/next-env/package.json index 9e9540c9ae1e..5bf5140b5425 100644 --- a/packages/next-env/package.json +++ b/packages/next-env/package.json @@ -31,6 +31,6 @@ "devDependencies": { "@vercel/ncc": "0.33.1", "dotenv": "10.0.0", - "dotenv-expand": "5.1.0" + "dotenv-expand": "8.0.1" } } diff --git a/test/development/dotenv-default-expansion/index.test.ts b/test/development/dotenv-default-expansion/index.test.ts new file mode 100644 index 000000000000..01b6cd0f9bc3 --- /dev/null +++ b/test/development/dotenv-default-expansion/index.test.ts @@ -0,0 +1,32 @@ +import { createNext } from 'e2e-utils' +import { NextInstance } from 'test/lib/next-modes/base' +import webdriver from 'next-webdriver' + +describe('Dotenv default expansion', () => { + let next: NextInstance + + beforeAll(async () => { + next = await createNext({ + files: { + 'pages/index.js': ` + export default function Page() { + return

{process.env.NEXT_PUBLIC_TEST}

+ } + `, + '.env': ` + NEXT_PUBLIC_TEST=\${MISSING_KEY:-default} + `, + }, + dependencies: {}, + }) + }) + afterAll(() => next.destroy()) + + it('should work', async () => { + const browser = await webdriver(next.appPort, '/') + const text = await browser.elementByCss('p').text() + expect(text).toBe('default') + + await browser.close() + }) +}) diff --git a/yarn.lock b/yarn.lock index 53743dacc843..935c13e59280 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9118,10 +9118,10 @@ dot-prop@^6.0.1: dependencies: is-obj "^2.0.0" -dotenv-expand@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== +dotenv-expand@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-8.0.1.tgz#332aa17c14b12e28e2e230f8d183eecc1c014fdc" + integrity sha512-j/Ih7bIERDR5PzI89Zu8ayd3tXZ6E3dbY0ljQ9Db0K87qBO8zdLsi2dIvDHMWtjC3Yxb8XixOTHAtia0fDHRpg== dotenv@10.0.0: version "10.0.0" @@ -14663,6 +14663,7 @@ minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.3.tgz#34c7cea038c817a8658461bf35174551dce17a0a" integrity sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ== dependencies: + encoding "^0.1.12" minipass "^3.1.0" minipass-sized "^1.0.3" minizlib "^2.0.0"