Skip to content

Commit

Permalink
fix: hardhat plugin npm exec (#2145)
Browse files Browse the repository at this point in the history
  • Loading branch information
tmm authored Apr 7, 2023
1 parent 21b6842 commit 2520743
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
5 changes: 5 additions & 0 deletions .changeset/poor-rice-jam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@wagmi/cli': patch
---

Fixed issue using Hardhat Plugin with npm.
6 changes: 3 additions & 3 deletions packages/cli/src/plugins/hardhat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,14 +132,14 @@ export function hardhat<TProject extends string>({
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`
Expand Down Expand Up @@ -187,7 +187,7 @@ export function hardhat<TProject extends string>({

const [command, ...options] = (
typeof rebuild === 'boolean'
? `${await getPackageManager()} hardhat compile`
? `${await getPackageManager(true)} hardhat compile`
: rebuild
).split(' ')

Expand Down
12 changes: 8 additions & 4 deletions packages/cli/src/utils/packages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,28 @@ 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
case 'npm':
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
}

1 comment on commit 2520743

@vercel
Copy link

@vercel vercel bot commented on 2520743 Apr 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.