diff --git a/packages/nuxi/src/commands/init.ts b/packages/nuxi/src/commands/init.ts index c020f07a0..ae4e6d57d 100644 --- a/packages/nuxi/src/commands/init.ts +++ b/packages/nuxi/src/commands/init.ts @@ -1,3 +1,4 @@ +import type { SelectPromptOptions } from 'consola' import type { DownloadTemplateResult } from 'giget' import type { PackageManagerName } from 'nypm' @@ -168,13 +169,31 @@ export default defineCommand({ process.exit(1) } + function detectCurrentPackageManager() { + const userAgent = process.env.npm_config_user_agent + if (!userAgent) { + return + } + const [name] = userAgent.split('/') + if (packageManagerOptions.includes(name as PackageManagerName)) { + return name as PackageManagerName + } + } + + const currentPackageManager = detectCurrentPackageManager() // Resolve package manager const packageManagerArg = ctx.args.packageManager as PackageManagerName + const packageManagerSelectOptions = packageManagerOptions.map(pm => ({ + label: pm, + value: pm, + hint: currentPackageManager === pm ? 'current' : undefined, + } satisfies SelectPromptOptions['options'][number])) const selectedPackageManager = packageManagerOptions.includes(packageManagerArg) ? packageManagerArg : await logger.prompt('Which package manager would you like to use?', { type: 'select', - options: packageManagerOptions, + options: packageManagerSelectOptions, + initial: currentPackageManager, cancel: 'reject', }).catch(() => process.exit(1))