1
import type childProcess from 'child_process'
3
import spawn from 'cross-spawn'
4
import PATH from 'path-name'
6
export interface RunNPMOptions {
8
env?: Record<string, string>
11
export function runNpm (npmPath: string | undefined, args: string[], options?: RunNPMOptions): childProcess.SpawnSyncReturns<Buffer> {
12
const npm = npmPath ?? 'npm'
13
return runScriptSync(npm, args, {
14
cwd: options?.cwd ?? process.cwd(),
17
env: { ...options?.env, COREPACK_ENABLE_STRICT: '0' },
21
export function runScriptSync (
26
stdio: childProcess.StdioOptions
28
env: Record<string, string>
30
): childProcess.SpawnSyncReturns<Buffer> {
35
const result = spawn.sync(command, args, {
39
if (result.error) throw result.error
49
const env = { ...process.env }
52
path.join(opts.cwd, 'node_modules', '.bin'),
53
path.dirname(process.execPath),
55
].join(path.delimiter)
58
env.npm_config_user_agent = opts.userAgent