diff --git a/.changeset/poor-rice-jam.md b/.changeset/poor-rice-jam.md new file mode 100644 index 0000000000..502fc2b6a7 --- /dev/null +++ b/.changeset/poor-rice-jam.md @@ -0,0 +1,5 @@ +--- +'@wagmi/cli': patch +--- + +Fixed issue using Hardhat Plugin with npm. diff --git a/packages/cli/src/plugins/hardhat.ts b/packages/cli/src/plugins/hardhat.ts index 48d003c02f..6aebc651ea 100644 --- a/packages/cli/src/plugins/hardhat.ts +++ b/packages/cli/src/plugins/hardhat.ts @@ -132,14 +132,14 @@ export function hardhat({ return { async contracts() { if (clean) { - const packageManager = await getPackageManager() + const packageManager = await getPackageManager(true) const [command, ...options] = ( typeof clean === 'boolean' ? `${packageManager} hardhat clean` : clean ).split(' ') await execa(command!, options, { cwd: project }) } if (build) { - const packageManager = await getPackageManager() + const packageManager = await getPackageManager(true) const [command, ...options] = ( typeof build === 'boolean' ? `${packageManager} hardhat compile` @@ -187,7 +187,7 @@ export function hardhat({ const [command, ...options] = ( typeof rebuild === 'boolean' - ? `${await getPackageManager()} hardhat compile` + ? `${await getPackageManager(true)} hardhat compile` : rebuild ).split(' ') diff --git a/packages/cli/src/utils/packages.ts b/packages/cli/src/utils/packages.ts index 123c7d694a..a3823a5d24 100644 --- a/packages/cli/src/utils/packages.ts +++ b/packages/cli/src/utils/packages.ts @@ -21,7 +21,7 @@ export async function getIsPackageInstalled({ } export async function getInstallCommand(packageName: string) { - const packageManager = await getPackageManager() + const packageManager = await getPackageManager(false) switch (packageManager) { case 'yarn': return [packageManager, ['add', packageName]] as const @@ -29,16 +29,20 @@ export async function getInstallCommand(packageName: string) { return [packageManager, ['install', '--save', packageName]] as const case 'pnpm': return [packageManager, ['add', packageName]] as const + default: + throw new Error(`Unknown package manager: ${packageManager}`) } } -export async function getPackageManager() { +export async function getPackageManager(executable?: boolean) { const userAgent = process.env.npm_config_user_agent if (userAgent) { if (userAgent.includes('pnpm')) return 'pnpm' // The yarn@^3 user agent includes npm, so yarn must be checked first. if (userAgent.includes('yarn')) return 'yarn' - if (userAgent.includes('npm')) return 'npm' + if (userAgent.includes('npm')) return executable ? 'npx' : 'npm' } - return detect() + const packageManager = await detect() + if (packageManager === 'npm' && executable) return 'npx' + return packageManager }