blob: 82f18e703cc12e450da89726089e5b8919bf0b7f [file]
// Windows resolves `npm` to npm.cmd, and a bare `npm` never reaches it: libuv's
// process launcher tries only .com and .exe and ignores PATHEXT, and Node
// refuses to launch a .cmd without a shell at all. So every npm subprocess on
// Windows has to go through the shell, and every one on POSIX must not — there
// the extensionless shim resolves directly and a shell would only add quoting.
//
// This is one rule with more than one caller, and getting it wrong is invisible
// until something actually runs on Windows, which until now nothing did.
export function npmSpawnOptions(options = {}, platform = process.platform) {
return { ...options, shell: platform === 'win32' };
}