Skip to content

Commit 5866bad

Browse files
committed
feat: proper process.env support in bundles
1 parent 1e7d13d commit 5866bad

1 file changed

Lines changed: 13 additions & 19 deletions

File tree

bundler/bundle.js

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,17 @@ export const build = async (...files) => {
220220
}
221221
}
222222

223+
const envOverride = {
224+
FORCE_COLOR: '0',
225+
NO_COLOR: '1',
226+
EXODUS_TEST_CONTEXT: 'pure',
227+
EXODUS_TEST_ENVIRONMENT: 'bundle', // always 'bundle'
228+
EXODUS_TEST_JEST_CONFIG: JSON.stringify(options.jestConfig),
229+
NODE_DEBUG: undefined,
230+
DEBUG: undefined,
231+
READABLE_STREAM: undefined,
232+
}
233+
223234
specificLoadPipeline.push(async (source, filepath) => {
224235
for (const m of source.matchAll(/readFileSync\(\s*(?:"([^"\\]+)"|'([^'\\]+)')[),]/gu)) {
225236
await fsFilesAdd(resolve(m[1] || m[2])) // resolves from cwd
@@ -237,7 +248,8 @@ export const build = async (...files) => {
237248
if (/(readdir|readFile|exists)Sync/u.test(source)) await fsFilesBundleFixtures('fs')
238249
if (fixturesRegex.test(source)) await fsFilesBundleFixtures('fixtures')
239250

240-
return source
251+
const getEnv = (key) => (Object.hasOwn(envOverride, key) ? envOverride[key] : process.env[key]) // We know key is safe as it comes from regex below
252+
return source.replace(/\b(?:process\.env\.([A-Z0-9_]+))\b/gu, (_, x) => stringify(getEnv(x)))
241253
})
242254

243255
if (files.length === 1) {
@@ -285,24 +297,6 @@ export const build = async (...files) => {
285297
platform: 'neutral',
286298
mainFields: ['browser', 'module', 'main'],
287299
define: {
288-
'process.env.FORCE_COLOR': stringify('0'),
289-
'process.env.NO_COLOR': stringify('1'),
290-
'process.env.NODE_ENV': stringify(process.env.NODE_ENV),
291-
'process.env.EXODUS_TEST_CONTEXT': stringify('pure'),
292-
'process.env.EXODUS_TEST_ENVIRONMENT': stringify('bundle'), // always 'bundle'
293-
'process.env.EXODUS_TEST_PLATFORM': stringify(process.env.EXODUS_TEST_PLATFORM), // e.g. 'hermes', 'node'
294-
'process.env.EXODUS_TEST_ENGINE': stringify(process.env.EXODUS_TEST_ENGINE), // e.g. 'hermes:bundle', 'node:bundle'
295-
'process.env.EXODUS_TEST_IS_BROWSER': stringify(process.env.EXODUS_TEST_IS_BROWSER), // '1' or ''
296-
'process.env.EXODUS_TEST_IS_BAREBONE': stringify(process.env.EXODUS_TEST_IS_BAREBONE), // '1' or ''
297-
'process.env.EXODUS_TEST_JEST_CONFIG': stringify(JSON.stringify(options.jestConfig)),
298-
'process.env.EXODUS_TEST_EXECARGV': stringify(process.env.EXODUS_TEST_EXECARGV),
299-
'process.env.EXODUS_TEST_ONLY': stringify(process.env.EXODUS_TEST_ONLY),
300-
'process.env.EXODUS_TEST_TIMEOUT': stringify(process.env.EXODUS_TEST_TIMEOUT),
301-
'process.env.NODE_DEBUG': stringify(),
302-
'process.env.DEBUG': stringify(),
303-
'process.env.READABLE_STREAM': stringify(),
304-
'process.env.CI': stringify(process.env.CI),
305-
'process.env.CI_ENABLE_VERBOSE_LOGS': stringify(process.env.CI_ENABLE_VERBOSE_LOGS),
306300
'process.browser': stringify(true),
307301
'process.emitWarning': 'undefined',
308302
'process.stderr': 'undefined',

0 commit comments

Comments
 (0)