| 123456789101112131415161718192021 |
- /** Resolve shell-free child-process invocations for the pnpm process that launched a package script. */
- /**
- * Resolve pnpm's executable and arguments from its lifecycle environment.
- * @param args - Arguments to pass to pnpm.
- * @param environment - Lifecycle environment containing `npm_execpath`.
- * @returns A command and argument array suitable for `spawn` or `spawnSync` without a shell.
- */
- export function pnpmInvocation(
- args: readonly string[],
- environment: NodeJS.ProcessEnv = process.env,
- ): { command: string; args: string[] } {
- const entrypoint = environment.npm_execpath
- if (entrypoint === undefined || entrypoint === '') {
- throw new Error('pnpm invocation: npm_execpath is unavailable; invoke the script through pnpm run.')
- }
- if (/\.[cm]?js$/iu.test(entrypoint)) {
- return { command: process.execPath, args: [entrypoint, ...args] }
- }
- return { command: entrypoint, args: [...args] }
- }
|