diff --git a/package.json b/package.json index 205aca893..f98dbe18e 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@nuxt/devtools": "workspace:*", "@nuxt/devtools-ui-kit": "workspace:*", "@nuxt/module-builder": "^0.3.1", + "@nuxt/schema": "^3.5.0", "@types/markdown-it": "^12.2.3", "@types/node": "^18.16.10", "@types/pacote": "^11.1.5", diff --git a/packages/devtools-kit/src/_types/analyze-build.ts b/packages/devtools-kit/src/_types/analyze-build.ts new file mode 100644 index 000000000..0e3a356af --- /dev/null +++ b/packages/devtools-kit/src/_types/analyze-build.ts @@ -0,0 +1,18 @@ +import type { NuxtAnalyzeMeta } from '@nuxt/schema' + +export interface AnalyzeBuildMeta extends NuxtAnalyzeMeta { + features: { + bundleClient: boolean + bundleNitro: boolean + viteInspect: boolean + } + size: { + clientBundle?: number + nitroBundle?: number + } +} + +export interface AnalyzeBuildsInfo { + isBuilding: boolean + builds: AnalyzeBuildMeta[] +} diff --git a/packages/devtools-kit/src/_types/index.ts b/packages/devtools-kit/src/_types/index.ts index ef8ca0c97..b1cc56c51 100644 --- a/packages/devtools-kit/src/_types/index.ts +++ b/packages/devtools-kit/src/_types/index.ts @@ -7,5 +7,6 @@ export * from './integrations' export * from './wizard' export * from './rpc' export * from './server-ctx' +export * from './analyze-build' export * from './options' export * from './common' diff --git a/packages/devtools-kit/src/_types/rpc.ts b/packages/devtools-kit/src/_types/rpc.ts index c9ded1bf0..41f58bcf1 100644 --- a/packages/devtools-kit/src/_types/rpc.ts +++ b/packages/devtools-kit/src/_types/rpc.ts @@ -6,6 +6,7 @@ import type { ModuleCustomTab } from './custom-tabs' import type { AssetInfo, AutoImportsWithMetadata, ComponentRelationship, HookInfo, ImageMeta, NpmCommandOptions, NpmCommandType, PackageManagerName, PackageUpdateInfo, ServerRouteInfo } from './integrations' import type { TerminalAction, TerminalInfo } from './terminals' import type { GetWizardArgs, WizardActions } from './wizard' +import type { AnalyzeBuildsInfo } from './analyze-build' import type { InstallModuleReturn } from './server-ctx' export interface ServerFunctions { @@ -44,6 +45,12 @@ export interface ServerFunctions { setStorageItem(key: string, value: StorageValue): Promise removeStorageItem(key: string): Promise + // Analyze + getAnalyzeBuildInfo(): Promise + generateAnalyzeBuildName(): Promise + startAnalyzeBuild(name: string): Promise + clearAnalyzeBuilds(names?: string[]): Promise + // Queries getImageMeta(filepath: string): Promise getTextAssetContent(filepath: string, limit?: number): Promise diff --git a/packages/devtools-kit/src/index.ts b/packages/devtools-kit/src/index.ts index 480c6122d..49cdd11d1 100644 --- a/packages/devtools-kit/src/index.ts +++ b/packages/devtools-kit/src/index.ts @@ -39,11 +39,14 @@ export function startSubprocess( execaOptions.command, execaOptions.args, { + reject: false, ...execaOptions, env: { COLORS: 'true', FORCE_COLOR: 'true', ...execaOptions.env, + // Force disable Nuxi CLI override + __CLI_ARGV__: undefined, }, }, ) diff --git a/packages/devtools-wizard/src/builtin.ts b/packages/devtools-wizard/src/builtin.ts index e838746e7..e455e3cf2 100644 --- a/packages/devtools-wizard/src/builtin.ts +++ b/packages/devtools-wizard/src/builtin.ts @@ -1,5 +1,5 @@ import { existsSync } from 'node:fs' -import fs from 'node:fs/promises' +import fsp from 'node:fs/promises' import { relative } from 'node:path' import { consola } from 'consola' import c from 'picocolors' @@ -36,7 +36,7 @@ async function toggleConfig(cwd: string, value?: boolean) { } try { - const source = await fs.readFile(nuxtConfig, 'utf-8') + const source = await fsp.readFile(nuxtConfig, 'utf-8') const mod = await parseModule(source, { sourceFileName: nuxtConfig }) const config = mod.exports.default.$type === 'function-call' ? mod.exports.default.$args[0] @@ -71,7 +71,7 @@ async function toggleConfig(cwd: string, value?: boolean) { if (!confirm) return false - await fs.writeFile(nuxtConfig, `${generated.trimEnd()}\n`, 'utf-8') + await fsp.writeFile(nuxtConfig, `${generated.trimEnd()}\n`, 'utf-8') } } catch (err) { diff --git a/packages/devtools/client/components/BuildAnalyzeDetails.vue b/packages/devtools/client/components/BuildAnalyzeDetails.vue new file mode 100644 index 000000000..f899427b3 --- /dev/null +++ b/packages/devtools/client/components/BuildAnalyzeDetails.vue @@ -0,0 +1,131 @@ + + +