From cffa717b919f121a61a3f592d7beebb1750a8f50 Mon Sep 17 00:00:00 2001 From: Paul Valladares <85648028+dreyfus92@users.noreply.github.com> Date: Tue, 7 Oct 2025 20:25:42 -0500 Subject: [PATCH 1/5] feat: enhance nuxi init with clack box styling and improved spinners --- packages/nuxi/build.config.ts | 1 + packages/nuxi/package.json | 1 + packages/nuxi/src/commands/init.ts | 28 +++++++++++++++++----------- packages/nuxt-cli/build.config.ts | 1 + pnpm-lock.yaml | 20 ++++++++++++++++++++ 5 files changed, 40 insertions(+), 11 deletions(-) diff --git a/packages/nuxi/build.config.ts b/packages/nuxi/build.config.ts index 29d8c2af..22379b91 100644 --- a/packages/nuxi/build.config.ts +++ b/packages/nuxi/build.config.ts @@ -33,6 +33,7 @@ export default defineBuildConfig({ ], externals: [ '@nuxt/test-utils', + '@clack/prompts', 'fsevents', 'node:url', 'node:buffer', diff --git a/packages/nuxi/package.json b/packages/nuxi/package.json index 691562b7..8ec08ac6 100644 --- a/packages/nuxi/package.json +++ b/packages/nuxi/package.json @@ -49,6 +49,7 @@ "clipboardy": "^5.0.0", "confbox": "^0.2.2", "consola": "^3.4.2", + "@clack/prompts": "1.0.0-alpha.6", "defu": "^6.1.4", "exsolve": "^1.0.7", "fuse.js": "^7.1.0", diff --git a/packages/nuxi/src/commands/init.ts b/packages/nuxi/src/commands/init.ts index 0fdcbcc4..46461242 100644 --- a/packages/nuxi/src/commands/init.ts +++ b/packages/nuxi/src/commands/init.ts @@ -7,6 +7,7 @@ import process from 'node:process' import { defineCommand } from 'citty' import { colors } from 'consola/utils' +import { box, spinner } from '@clack/prompts' import { downloadTemplate, startShell } from 'giget' import { installDependencies } from 'nypm' import { $fetch } from 'ofetch' @@ -333,8 +334,9 @@ export default defineCommand({ logger.info('Skipping install dependencies step.') } else { - logger.start('Installing dependencies...') + const spin = spinner() + spin.start('Installing dependencies...') try { await installDependencies({ cwd: template.dir, @@ -343,16 +345,16 @@ export default defineCommand({ command: selectedPackageManager, }, }) + spin.stop('Dependencies installed successfully') } catch (err) { + spin.stop('Failed to install dependencies') if (process.env.DEBUG) { throw err } logger.error((err as Error).toString()) process.exit(1) } - - logger.success('Installation completed.') } if (ctx.args.gitInit === undefined) { @@ -467,21 +469,25 @@ export default defineCommand({ } // Display next steps - logger.log( - `\n✨ Nuxt project has been created with the \`${template.name}\` template. Next steps:`, - ) const relativeTemplateDir = relative(process.cwd(), template.dir) || '.' const runCmd = selectedPackageManager === 'deno' ? 'task' : 'run' const nextSteps = [ !ctx.args.shell && relativeTemplateDir.length > 1 - && `\`cd ${relativeTemplateDir}\``, - `Start development server with \`${selectedPackageManager} ${runCmd} dev\``, + && `cd ${colors.blue(relativeTemplateDir)}`, + `Start development server with ${colors.blue(selectedPackageManager)} ${colors.blue(runCmd + " dev")}`, ].filter(Boolean) - for (const step of nextSteps) { - logger.log(` › ${step}`) - } + box(`Next steps:\n${nextSteps.map(step => ` › ${step}`).join('\n')}`, ` ✨ Nuxt project created with ${colors.blue(template.name)} template `, { + contentAlign: "left", + titleAlign: "left", + width: "auto", + titlePadding: 2, + contentPadding: 2, + rounded: true, + includePrefix: true, + formatBorder: (text: string) => colors.green(text), + }) if (ctx.args.shell) { startShell(template.dir) diff --git a/packages/nuxt-cli/build.config.ts b/packages/nuxt-cli/build.config.ts index 20f394b0..2e3b5f0c 100644 --- a/packages/nuxt-cli/build.config.ts +++ b/packages/nuxt-cli/build.config.ts @@ -27,5 +27,6 @@ export default defineBuildConfig({ externals: [ '@nuxt/test-utils', '@nuxt/schema', + '@clack/prompts', ], }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f7923cba..99cd5f51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,6 +107,9 @@ importers: packages/nuxi: devDependencies: + '@clack/prompts': + specifier: 1.0.0-alpha.6 + version: 1.0.0-alpha.6 '@nuxt/kit': specifier: ^4.1.2 version: 4.1.2(magicast@0.3.5) @@ -565,9 +568,15 @@ packages: '@clack/core@0.5.0': resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} + '@clack/core@1.0.0-alpha.6': + resolution: {integrity: sha512-eG5P45+oShFG17u9I1DJzLkXYB1hpUgTLi32EfsMjSHLEqJUR8BOBCVFkdbUX2g08eh/HCi6UxNGpPhaac1LAA==} + '@clack/prompts@0.11.0': resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + '@clack/prompts@1.0.0-alpha.6': + resolution: {integrity: sha512-75NCtYOgDHVBE2nLdKPTDYOaESxO0GLAKC7INREp5VbS988Xua1u+588VaGlcvXiLc/kSwc25Cd+4PeTSpY6QQ==} + '@cloudflare/kv-asset-handler@0.4.0': resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} engines: {node: '>=18.0.0'} @@ -5701,12 +5710,23 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 + '@clack/core@1.0.0-alpha.6': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + '@clack/prompts@0.11.0': dependencies: '@clack/core': 0.5.0 picocolors: 1.1.1 sisteransi: 1.0.5 + '@clack/prompts@1.0.0-alpha.6': + dependencies: + '@clack/core': 1.0.0-alpha.6 + picocolors: 1.1.1 + sisteransi: 1.0.5 + '@cloudflare/kv-asset-handler@0.4.0': dependencies: mime: 3.0.0 From a7c68826143a359d56414aee11cd931cf795cf29 Mon Sep 17 00:00:00 2001 From: Paul Valladares <85648028+dreyfus92@users.noreply.github.com> Date: Tue, 7 Oct 2025 22:11:48 -0500 Subject: [PATCH 2/5] format --- packages/nuxi/package.json | 2 +- packages/nuxi/src/commands/init.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/nuxi/package.json b/packages/nuxi/package.json index 8ec08ac6..527f9b50 100644 --- a/packages/nuxi/package.json +++ b/packages/nuxi/package.json @@ -39,6 +39,7 @@ "test:dist": "node ./bin/nuxi.mjs info ./playground" }, "devDependencies": { + "@clack/prompts": "1.0.0-alpha.6", "@nuxt/kit": "^4.1.2", "@nuxt/schema": "^4.1.2", "@nuxt/test-utils": "^3.19.2", @@ -49,7 +50,6 @@ "clipboardy": "^5.0.0", "confbox": "^0.2.2", "consola": "^3.4.2", - "@clack/prompts": "1.0.0-alpha.6", "defu": "^6.1.4", "exsolve": "^1.0.7", "fuse.js": "^7.1.0", diff --git a/packages/nuxi/src/commands/init.ts b/packages/nuxi/src/commands/init.ts index 46461242..e5980a20 100644 --- a/packages/nuxi/src/commands/init.ts +++ b/packages/nuxi/src/commands/init.ts @@ -5,9 +5,9 @@ import type { PackageManagerName } from 'nypm' import { existsSync } from 'node:fs' import process from 'node:process' +import { box, spinner } from '@clack/prompts' import { defineCommand } from 'citty' import { colors } from 'consola/utils' -import { box, spinner } from '@clack/prompts' import { downloadTemplate, startShell } from 'giget' import { installDependencies } from 'nypm' import { $fetch } from 'ofetch' @@ -475,13 +475,13 @@ export default defineCommand({ !ctx.args.shell && relativeTemplateDir.length > 1 && `cd ${colors.blue(relativeTemplateDir)}`, - `Start development server with ${colors.blue(selectedPackageManager)} ${colors.blue(runCmd + " dev")}`, + `Start development server with ${colors.blue(selectedPackageManager)} ${colors.blue(`${runCmd} dev`)}`, ].filter(Boolean) box(`Next steps:\n${nextSteps.map(step => ` › ${step}`).join('\n')}`, ` ✨ Nuxt project created with ${colors.blue(template.name)} template `, { - contentAlign: "left", - titleAlign: "left", - width: "auto", + contentAlign: 'left', + titleAlign: 'left', + width: 'auto', titlePadding: 2, contentPadding: 2, rounded: true, From 21736280f002fca69c9a77840238f3467dee27ea Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 8 Oct 2025 05:39:30 +0100 Subject: [PATCH 3/5] chore: add clack to deps + remove from externals --- packages/create-nuxt/package.json | 1 + packages/nuxi/build.config.ts | 1 - packages/nuxi/package.json | 2 +- packages/nuxt-cli/build.config.ts | 1 - packages/nuxt-cli/package.json | 1 + pnpm-lock.yaml | 8 +++++++- 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/create-nuxt/package.json b/packages/create-nuxt/package.json index 0e4e7e88..8d906860 100644 --- a/packages/create-nuxt/package.json +++ b/packages/create-nuxt/package.json @@ -33,6 +33,7 @@ "citty": "^0.1.6" }, "devDependencies": { + "@clack/prompts": "^1.0.0-alpha.6", "@types/node": "^22.18.8", "rollup": "^4.52.4", "rollup-plugin-visualizer": "^6.0.4", diff --git a/packages/nuxi/build.config.ts b/packages/nuxi/build.config.ts index 22379b91..29d8c2af 100644 --- a/packages/nuxi/build.config.ts +++ b/packages/nuxi/build.config.ts @@ -33,7 +33,6 @@ export default defineBuildConfig({ ], externals: [ '@nuxt/test-utils', - '@clack/prompts', 'fsevents', 'node:url', 'node:buffer', diff --git a/packages/nuxi/package.json b/packages/nuxi/package.json index db8297d3..ce71b6cd 100644 --- a/packages/nuxi/package.json +++ b/packages/nuxi/package.json @@ -39,7 +39,7 @@ "test:dist": "node ./bin/nuxi.mjs info ./playground" }, "devDependencies": { - "@clack/prompts": "1.0.0-alpha.6", + "@clack/prompts": "^1.0.0-alpha.6", "@nuxt/kit": "^4.1.3", "@nuxt/schema": "^4.1.3", "@nuxt/test-utils": "^3.19.2", diff --git a/packages/nuxt-cli/build.config.ts b/packages/nuxt-cli/build.config.ts index 2e3b5f0c..20f394b0 100644 --- a/packages/nuxt-cli/build.config.ts +++ b/packages/nuxt-cli/build.config.ts @@ -27,6 +27,5 @@ export default defineBuildConfig({ externals: [ '@nuxt/test-utils', '@nuxt/schema', - '@clack/prompts', ], }) diff --git a/packages/nuxt-cli/package.json b/packages/nuxt-cli/package.json index 15cc3ca3..2f0171bf 100644 --- a/packages/nuxt-cli/package.json +++ b/packages/nuxt-cli/package.json @@ -33,6 +33,7 @@ "prepack": "unbuild" }, "dependencies": { + "@clack/prompts": "^1.0.0-alpha.6", "c12": "^3.3.0", "citty": "^0.1.6", "clipboardy": "^5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f1cdcbae..6eb97adc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,6 +80,9 @@ importers: specifier: ^0.1.6 version: 0.1.6 devDependencies: + '@clack/prompts': + specifier: ^1.0.0-alpha.6 + version: 1.0.0-alpha.6 '@types/node': specifier: ^22.18.8 version: 22.18.8 @@ -108,7 +111,7 @@ importers: packages/nuxi: devDependencies: '@clack/prompts': - specifier: 1.0.0-alpha.6 + specifier: ^1.0.0-alpha.6 version: 1.0.0-alpha.6 '@nuxt/kit': specifier: ^4.1.3 @@ -233,6 +236,9 @@ importers: packages/nuxt-cli: dependencies: + '@clack/prompts': + specifier: ^1.0.0-alpha.6 + version: 1.0.0-alpha.6 c12: specifier: ^3.3.0 version: 3.3.0(magicast@0.3.5) From 5ae22768dc0f0e5aba5b010e8b5844c2cbea11a3 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 8 Oct 2025 05:42:41 +0100 Subject: [PATCH 4/5] chore: remove from create-nuxt deps + update knip --- knip.json | 2 +- packages/create-nuxt/package.json | 1 - pnpm-lock.yaml | 3 --- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/knip.json b/knip.json index cb954048..3f9a15fd 100644 --- a/knip.json +++ b/knip.json @@ -25,6 +25,7 @@ "test/fixtures/*" ], "ignoreDependencies": [ + "@clack/prompts", "c12", "clipboardy", "confbox", @@ -45,7 +46,6 @@ "semver", "srvx", "ufo", - "undici", "youch" ] } diff --git a/packages/create-nuxt/package.json b/packages/create-nuxt/package.json index 8d906860..0e4e7e88 100644 --- a/packages/create-nuxt/package.json +++ b/packages/create-nuxt/package.json @@ -33,7 +33,6 @@ "citty": "^0.1.6" }, "devDependencies": { - "@clack/prompts": "^1.0.0-alpha.6", "@types/node": "^22.18.8", "rollup": "^4.52.4", "rollup-plugin-visualizer": "^6.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6eb97adc..a24c0aec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,9 +80,6 @@ importers: specifier: ^0.1.6 version: 0.1.6 devDependencies: - '@clack/prompts': - specifier: ^1.0.0-alpha.6 - version: 1.0.0-alpha.6 '@types/node': specifier: ^22.18.8 version: 22.18.8 From 3b8c0e71974ff3467c4fcb37f44241bb3fe89933 Mon Sep 17 00:00:00 2001 From: Paul Valladares <85648028+dreyfus92@users.noreply.github.com> Date: Wed, 8 Oct 2025 09:25:27 -0500 Subject: [PATCH 5/5] style: apply themeColor to box prompt --- packages/nuxi/src/commands/init.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/nuxi/src/commands/init.ts b/packages/nuxi/src/commands/init.ts index e5980a20..d2f68a81 100644 --- a/packages/nuxi/src/commands/init.ts +++ b/packages/nuxi/src/commands/init.ts @@ -474,11 +474,11 @@ export default defineCommand({ const nextSteps = [ !ctx.args.shell && relativeTemplateDir.length > 1 - && `cd ${colors.blue(relativeTemplateDir)}`, - `Start development server with ${colors.blue(selectedPackageManager)} ${colors.blue(`${runCmd} dev`)}`, + && `cd ${themeColor}${relativeTemplateDir}\x1B[0m`, + `Start development server with ${themeColor}${selectedPackageManager}\x1B[0m ${themeColor}${runCmd} dev\x1B[0m`, ].filter(Boolean) - box(`Next steps:\n${nextSteps.map(step => ` › ${step}`).join('\n')}`, ` ✨ Nuxt project created with ${colors.blue(template.name)} template `, { + box(`Next steps:\n${nextSteps.map(step => ` › ${step}`).join('\n')}`, ` ✨ Nuxt project created with ${themeColor}${template.name}\x1B[0m template `, { contentAlign: 'left', titleAlign: 'left', width: 'auto', @@ -486,7 +486,7 @@ export default defineCommand({ contentPadding: 2, rounded: true, includePrefix: true, - formatBorder: (text: string) => colors.green(text), + formatBorder: (text: string) => `${themeColor + text}\x1B[0m`, }) if (ctx.args.shell) {