Skip to content

Commit 5ace123

Browse files
committed
fix: build analyzer, close #701
1 parent 578ecfc commit 5ace123

File tree

3 files changed

+35
-8
lines changed

3 files changed

+35
-8
lines changed

packages/devtools/client/components/BuildAnalyzeDetails.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ const props = defineProps<{
1212
}>()
1313
1414
const runtimeConfig = useRuntimeConfig()
15-
const ROUTE_ANALYZE = `${runtimeConfig.app.baseURL}/__nuxt_devtools__/analyze/`.replace(/\/+/g, '/')
15+
const CLIENT_BASE = '/__nuxt_devtools__/client'
16+
const ROUTE_ANALYZE = `${runtimeConfig.app.baseURL.replace(CLIENT_BASE, '/')}/__nuxt_devtools__/analyze/`.replace(/\/+/g, '/')
1617
1718
const tabs = computed(() => {
1819
const items = [
@@ -95,7 +96,7 @@ async function clear(name: string) {
9596
<div>{{ formatFileSize(current.size.clientBundle) }}</div>
9697
</div>
9798
</template>
98-
<template v-if="current.size.nitroBundle">
99+
<template v-if="current.size?.nitroBundle">
99100
<div i-carbon-bare-metal-server text-xl />
100101
<div>
101102
<div text-sm op50>

packages/devtools/src/module-main.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
109109
addVitePlugin(vitePlugin)
110110

111111
const clientDirExists = existsSync(clientDir)
112-
const analyzeDir = join(nuxt.options.rootDir, '.nuxt/analyze')
113112

114113
nuxt.hook('vite:extendConfig', (config) => {
115114
config.server ||= {}
@@ -124,6 +123,7 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
124123
if (!Array.isArray(config.server.watch.ignored))
125124
config.server.watch.ignored = [config.server.watch.ignored]
126125
config.server.watch.ignored.push('**/.nuxt/analyze/**')
126+
config.server.watch.ignored.push('**/.cache/nuxt-devtools/**')
127127
})
128128

129129
nuxt.hook('imports:extend', (imports) => {
@@ -141,7 +141,10 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
141141

142142
// TODO: Use WS from nitro server when possible
143143
nuxt.hook('vite:serverCreated', (server: ViteDevServer) => {
144-
server.middlewares.use(ROUTE_ANALYZE, sirv(analyzeDir, { single: false, dev: true }))
144+
const devtoolsAnalyzeDir = join(nuxt.options.rootDir, 'node_modules/.cache/nuxt-devtools/analyze')
145+
146+
server.middlewares.use(ROUTE_ANALYZE, sirv(devtoolsAnalyzeDir, { single: false, dev: true, dotfiles: true, ignores: false }))
147+
145148
// Serve the front end in production
146149
if (clientDirExists) {
147150
const indexHtmlPath = join(clientDir, 'index.html')

packages/devtools/src/server-rpc/analyze-build.ts

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }: Nuxt
1313
let initalized: Promise<any> | undefined
1414

1515
const processId = 'devtools:analyze-build'
16-
const analyzeDir = join(nuxt.options.rootDir, '.nuxt/analyze')
16+
const devtoolsAnalyzeDir = join(nuxt.options.rootDir, 'node_modules/.cache/nuxt-devtools/analyze')
1717

1818
async function startAnalyzeBuild(name: string) {
1919
if (promise)
@@ -31,6 +31,7 @@ export function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }: Nuxt
3131

3232
refresh('getAnalyzeBuildInfo')
3333

34+
initalized = undefined
3435
promise = result.getProcess()
3536
.then(() => {
3637
refresh('getAnalyzeBuildInfo')
@@ -46,7 +47,29 @@ export function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }: Nuxt
4647
}
4748

4849
async function readBuildInfo() {
49-
const files = await glob(['*/meta.json'], { cwd: analyzeDir, onlyFiles: true, absolute: true })
50+
for (const dir of new Set([
51+
join(nuxt.options.rootDir, '.nuxt/analyze'),
52+
join(nuxt.options.rootDir, 'node_modules/.cache/nuxt/.nuxt/analyze'),
53+
nuxt.options.analyzeDir,
54+
])) {
55+
const files = await glob(['**/meta.json', 'meta.json'], {
56+
cwd: dir,
57+
onlyFiles: true,
58+
absolute: true,
59+
})
60+
for (const file of files) {
61+
const slug = JSON.parse(await fsp.readFile(file, 'utf-8')).slug
62+
const dir = dirname(file)
63+
await fsp.mkdir(devtoolsAnalyzeDir, { recursive: true })
64+
await fsp.rename(dir, join(devtoolsAnalyzeDir, slug))
65+
}
66+
}
67+
68+
const files = await glob(['**/meta.json'], {
69+
cwd: devtoolsAnalyzeDir,
70+
onlyFiles: true,
71+
absolute: true,
72+
})
5073
builds = await Promise.all(files.map(async (file) => {
5174
const dir = dirname(file)
5275
const json = JSON.parse(await fsp.readFile(file, 'utf-8')) as NuxtAnalyzeMeta
@@ -93,11 +116,11 @@ export function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }: Nuxt
93116
await ensureDevAuthToken(token)
94117

95118
if (!names) {
96-
await fsp.rm(analyzeDir, { recursive: true, force: true })
119+
await fsp.rm(devtoolsAnalyzeDir, { recursive: true, force: true })
97120
}
98121
else {
99122
const targets = builds.filter(build => names.includes(build.name))
100-
await Promise.all(targets.map(target => fsp.rm(join(analyzeDir, target.slug), { recursive: true, force: true })))
123+
await Promise.all(targets.map(target => fsp.rm(join(devtoolsAnalyzeDir, target.slug), { recursive: true, force: true })))
101124
}
102125
initalized = readBuildInfo()
103126
refresh('getAnalyzeBuildInfo')

0 commit comments

Comments
 (0)