mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 19:26:42 +08:00
feat: parse --env.<flags> [WIP]
This commit is contained in:
39
packages/webpack5/src/cli/parseEnvFlags.ts
Normal file
39
packages/webpack5/src/cli/parseEnvFlags.ts
Normal file
@ -0,0 +1,39 @@
|
||||
import { IWebpackEnv } from '@nativescript/webpack';
|
||||
|
||||
const ENV_FLAG_RE = /--env\.(\w+)(?:=(.+))?/;
|
||||
|
||||
export function parseEnvFlags(flags: string[]): IWebpackEnv {
|
||||
const envFlags = flags.filter((flag) => flag.includes('--env.'));
|
||||
|
||||
const env = {};
|
||||
|
||||
envFlags.map((flag) => {
|
||||
let [_, name, v] = ENV_FLAG_RE.exec(flag);
|
||||
let value: any = v;
|
||||
|
||||
// convert --env.foo to --env.foo=true
|
||||
if (value === undefined) {
|
||||
value = true;
|
||||
}
|
||||
|
||||
// convert true/false to boolean
|
||||
if (value === 'true' || value === 'false') {
|
||||
value = value === 'true';
|
||||
}
|
||||
|
||||
// convert numbers
|
||||
if (!isNaN(value) && !isNaN(parseFloat(value))) {
|
||||
value = +value;
|
||||
}
|
||||
|
||||
// duplicate key/name - convert to array
|
||||
if (name in env && value) {
|
||||
const orig = Array.isArray(env[name]) ? env[name] : [env[name]];
|
||||
env[name] = [...orig, value];
|
||||
} else {
|
||||
env[name] = value;
|
||||
}
|
||||
});
|
||||
|
||||
return env;
|
||||
}
|
Reference in New Issue
Block a user