diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/build.env b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/build.env new file mode 100644 index 0000000000..1d658b3c7a --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/build.env @@ -0,0 +1,5 @@ +CUSTOM_PACK_PROBE=custom +OTHER_PACK_PROBE=other +VITE_PACK_PROBE=default +TSDOWN_PACK_PROBE=compat +CLI_PACK_PROBE=cli diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/entry.js b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/entry.js new file mode 100644 index 0000000000..718d38989b --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/entry.js @@ -0,0 +1 @@ +export const values = [process.env.CUSTOM_PACK_PROBE, process.env.OTHER_PACK_PROBE, process.env.VITE_PACK_PROBE, process.env.TSDOWN_PACK_PROBE, process.env.CLI_PACK_PROBE]; diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/package.json b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/package.json new file mode 100644 index 0000000000..e9489e2986 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/package.json @@ -0,0 +1 @@ +{"name":"pack-env-prefix","private":true,"type":"module"} diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots.toml b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots.toml new file mode 100644 index 0000000000..f350be7afa --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots.toml @@ -0,0 +1,23 @@ +[[case]] +name = "pack_env_prefix_config" +vp = ["local", "global"] +steps = [ + { argv = ["vp", "pack"], snapshot = false }, + ["node", "verify.mjs"], +] + +[[case]] +name = "pack_env_prefix_override" +vp = ["local", "global"] +steps = [ + { argv = ["vp", "pack", "--env-prefix", "CLI_"], snapshot = false }, + ["node", "verify.mjs", "override"], +] + +[[case]] +name = "pack_env_prefix_no_config" +vp = ["local", "global"] +steps = [ + { argv = ["vp", "pack", "--no-config", "entry.js", "--env-file", "build.env"], snapshot = false }, + ["node", "verify.mjs", "no-config"], +] diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_config.global.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_config.global.md new file mode 100644 index 0000000000..dde5248ef5 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_config.global.md @@ -0,0 +1,10 @@ +# pack_env_prefix_config + +## `vp pack` + + +## `node verify.mjs` + +``` +Environment prefix values and exclusions match. +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_config.local.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_config.local.md new file mode 100644 index 0000000000..dde5248ef5 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_config.local.md @@ -0,0 +1,10 @@ +# pack_env_prefix_config + +## `vp pack` + + +## `node verify.mjs` + +``` +Environment prefix values and exclusions match. +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_no_config.global.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_no_config.global.md new file mode 100644 index 0000000000..e208c11a4f --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_no_config.global.md @@ -0,0 +1,10 @@ +# pack_env_prefix_no_config + +## `vp pack --no-config entry.js --env-file build.env` + + +## `node verify.mjs no-config` + +``` +Environment prefix values and exclusions match. +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_no_config.local.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_no_config.local.md new file mode 100644 index 0000000000..e208c11a4f --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_no_config.local.md @@ -0,0 +1,10 @@ +# pack_env_prefix_no_config + +## `vp pack --no-config entry.js --env-file build.env` + + +## `node verify.mjs no-config` + +``` +Environment prefix values and exclusions match. +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_override.global.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_override.global.md new file mode 100644 index 0000000000..b0d4136bf4 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_override.global.md @@ -0,0 +1,10 @@ +# pack_env_prefix_override + +## `vp pack --env-prefix CLI_` + + +## `node verify.mjs override` + +``` +Environment prefix values and exclusions match. +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_override.local.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_override.local.md new file mode 100644 index 0000000000..b0d4136bf4 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/snapshots/pack_env_prefix_override.local.md @@ -0,0 +1,10 @@ +# pack_env_prefix_override + +## `vp pack --env-prefix CLI_` + + +## `node verify.mjs override` + +``` +Environment prefix values and exclusions match. +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/verify.mjs b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/verify.mjs new file mode 100644 index 0000000000..87aef44603 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/verify.mjs @@ -0,0 +1,22 @@ +import assert from 'node:assert/strict'; + +for (const key of ['CUSTOM_PACK_PROBE', 'OTHER_PACK_PROBE', 'VITE_PACK_PROBE', 'TSDOWN_PACK_PROBE', 'CLI_PACK_PROBE']) { + delete process.env[key]; +} +const defaults = [undefined, undefined, 'default', 'compat', undefined]; +const expected = { + string: ['custom', undefined, undefined, undefined, undefined], + array: ['custom', 'other', undefined, undefined, undefined], + empty: [undefined, undefined, undefined, undefined, undefined], + defaults, +}; +if (process.argv[2] === 'no-config') { + assert.deepEqual((await import('./dist/entry.mjs')).values, defaults); +} else { + for (const [name, values] of Object.entries(expected)) { + assert.deepEqual((await import(`./dist/${name}/entry.mjs`)).values, + process.argv[2] === 'override' ? [undefined, undefined, undefined, undefined, 'cli'] : values, + name); + } +} +console.log('Environment prefix values and exclusions match.'); diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/vite.config.ts b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/vite.config.ts new file mode 100644 index 0000000000..689c0084f9 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/command_pack_env_prefix/vite.config.ts @@ -0,0 +1,13 @@ +export default { + pack: [ + { name: 'string', envPrefix: 'CUSTOM_' }, + { name: 'array', envPrefix: ['CUSTOM_', 'OTHER_'] }, + { name: 'empty', envPrefix: [] }, + { name: 'defaults' }, + ].map(({ name, ...config }) => ({ + ...config, + entry: ['entry.js'], + envFile: 'build.env', + outDir: `dist/${name}`, + })), +}; diff --git a/packages/cli/src/pack-bin.ts b/packages/cli/src/pack-bin.ts index 418a96e6a3..23e3acaa82 100644 --- a/packages/cli/src/pack-bin.ts +++ b/packages/cli/src/pack-bin.ts @@ -141,9 +141,6 @@ cli if (input.length > 0) { flags.entry = input; } - if (flags.envPrefix === undefined) { - flags.envPrefix = DEFAULT_ENV_PREFIXES; - } async function runBuild(): Promise { const viteConfig = @@ -163,6 +160,7 @@ cli : [viteConfig?.pack ?? {}]; for (const packConfig of packConfigs) { const merged = { ...packConfig, ...flags }; + merged.envPrefix ??= DEFAULT_ENV_PREFIXES; // Keep postcss/lightningcss external to the dts bundle (see plugin doc) if (merged.dts) { const existingPlugins = Array.isArray(merged.plugins) ? merged.plugins : [];