27 lines
726 B
TypeScript
27 lines
726 B
TypeScript
import type { Options } from 'execa';
|
|
import managePath from 'manage-path';
|
|
import { resolve } from 'node:path';
|
|
import { wxt } from '../wxt';
|
|
|
|
const managedPath = managePath(process.env);
|
|
|
|
/**
|
|
* Wrapper around `execa` with a modified `PATH` variable containing CLI tools from WXT's dependencies.
|
|
*/
|
|
export const exec = async (
|
|
file: string,
|
|
args?: readonly string[],
|
|
options?: Options,
|
|
) => {
|
|
// Reset so the same path isn't added multiple times
|
|
managedPath.restore();
|
|
|
|
// Add subdependency path for PNPM shamefully-hoist=false
|
|
managedPath.push(
|
|
resolve(wxt.config.root, 'node_modules/wxt/node_modules/.bin'),
|
|
);
|
|
|
|
const { execa } = await import('execa');
|
|
return await execa(file, args, options);
|
|
};
|