-
-
Notifications
You must be signed in to change notification settings - Fork 236
/
get-spawn-opts.ts
49 lines (44 loc) · 1.3 KB
/
get-spawn-opts.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { SpawnOptions } from 'child_process';
import supportsColor from 'supports-color';
export const getSpawnOpts = ({
colorSupport = supportsColor.stdout,
cwd,
process = global.process,
raw = false,
env = {},
}: {
/**
* What the color support of the spawned processes should be.
* If set to `false`, then no colors should be output.
*
* Defaults to whatever the terminal's stdout support is.
*/
colorSupport?: Pick<supportsColor.supportsColor.Level, 'level'> | false;
/**
* The NodeJS process.
*/
process?: Pick<NodeJS.Process, 'cwd' | 'platform' | 'env'>;
/**
* A custom working directory to spawn processes in.
* Defaults to `process.cwd()`.
*/
cwd?: string;
/**
* Whether to customize the options for spawning processes in raw mode.
* Defaults to false.
*/
raw?: boolean;
/**
* Map of custom environment variables to include in the spawn options.
*/
env?: Record<string, unknown>;
}): SpawnOptions => ({
cwd: cwd || process.cwd(),
...(raw && { stdio: 'inherit' as const }),
...(/^win/.test(process.platform) && { detached: false }),
env: {
...(colorSupport ? { FORCE_COLOR: colorSupport.level.toString() } : {}),
...process.env,
...env,
},
});