File tree Expand file tree Collapse file tree 6 files changed +92
-26
lines changed Expand file tree Collapse file tree 6 files changed +92
-26
lines changed Original file line number Diff line number Diff line change @@ -36,28 +36,11 @@ withDefaults(defineProps<{
36
36
<slot />
37
37
</div >
38
38
39
- <template v-if =" showImports && chunk .imports .length > 0 " >
40
- <div op50 >
41
- Imports
42
- </div >
43
- <div flex =" ~ col gap-1" ws-nowrap >
44
- <DisplayChunkImports
45
- v-for =" (importChunk, index) in chunk.imports"
46
- :key =" index"
47
- :chunk-import =" importChunk"
48
- :session =" session"
49
- :importer =" chunk"
50
- hover =" bg-active"
51
- border =" ~ base rounded" px2 py1 w-full
52
- />
53
- </div >
54
- </template >
55
-
56
- <template v-if =" showModules " >
57
- <div op50 >
58
- Modules
59
- </div >
60
- <div flex =" ~ col gap-1" ws-nowrap >
39
+ <details v-if =" showModules" open =" true" >
40
+ <summary op50 >
41
+ <span >Modules ({{ chunk.modules.length }})</span >
42
+ </summary >
43
+ <div flex =" ~ col gap-1" mt2 ws-nowrap >
61
44
<DisplayModuleId
62
45
v-for =" module of chunk.modules"
63
46
:id =" module"
@@ -69,6 +52,23 @@ withDefaults(defineProps<{
69
52
border =" ~ base rounded" px2 py1 w-full
70
53
/>
71
54
</div >
72
- </template >
55
+ </details >
56
+
57
+ <details v-if =" showImports && chunk.imports.length > 0" open =" true" >
58
+ <summary op50 >
59
+ <span >Imports ({{ chunk.imports.length }})</span >
60
+ </summary >
61
+ <div flex =" ~ col gap-1" mt2 ws-nowrap >
62
+ <DisplayChunkImports
63
+ v-for =" (importChunk, index) in chunk.imports"
64
+ :key =" index"
65
+ :chunk-import =" importChunk"
66
+ :session =" session"
67
+ :importer =" chunk"
68
+ hover =" bg-active"
69
+ border =" ~ base rounded" px2 py1 w-full
70
+ />
71
+ </div >
72
+ </details >
73
73
</div >
74
74
</template >
Original file line number Diff line number Diff line change 1
1
import { defineRpcFunction } from '@vitejs/devtools-kit'
2
+ import { guessChunkName } from '../../../shared/utils/guess-chunk-name'
2
3
import { getLogsManager } from '../utils'
3
4
4
5
export const rolldownGetChunkInfo = defineRpcFunction ( {
@@ -9,7 +10,10 @@ export const rolldownGetChunkInfo = defineRpcFunction({
9
10
return {
10
11
handler : async ( { session, id } : { session : string , id : number } ) => {
11
12
const reader = await manager . loadSession ( session )
12
- return reader . manager . chunks . get ( id )
13
+ const chunk = reader . manager . chunks . get ( id )
14
+ if ( chunk && ! chunk . name )
15
+ chunk . name = guessChunkName ( chunk )
16
+ return chunk
13
17
} ,
14
18
}
15
19
} ,
Original file line number Diff line number Diff line change 1
1
import { defineRpcFunction } from '@vitejs/devtools-kit'
2
+ import { guessChunkName } from '../../../shared/utils/guess-chunk-name'
2
3
import { getLogsManager } from '../utils'
3
4
4
5
export const rolldownGetChunksGraph = defineRpcFunction ( {
@@ -9,7 +10,12 @@ export const rolldownGetChunksGraph = defineRpcFunction({
9
10
return {
10
11
handler : async ( { session } : { session : string } ) => {
11
12
const reader = await manager . loadSession ( session )
12
- return Array . from ( reader . manager . chunks . values ( ) )
13
+ const chunks = Array . from ( reader . manager . chunks . values ( ) )
14
+ chunks . forEach ( ( chunk ) => {
15
+ if ( chunk && ! chunk . name )
16
+ chunk . name = guessChunkName ( chunk )
17
+ } )
18
+ return chunks
13
19
} ,
14
20
}
15
21
} ,
Original file line number Diff line number Diff line change @@ -130,7 +130,7 @@ export default defineNuxtConfig({
130
130
} ,
131
131
132
132
devtools : {
133
- enabled : true ,
133
+ enabled : false ,
134
134
} ,
135
135
136
136
typescript : {
Original file line number Diff line number Diff line change
1
+ import { describe , expect , it } from 'vitest'
2
+ import { simplifyModuleName } from '../guess-chunk-name'
3
+
4
+ describe ( 'simplifyModuleName' , ( ) => {
5
+ it ( 'should return the simplified module name' , ( ) => {
6
+ expect ( simplifyModuleName ( 'foo/bar' ) ) . toBe ( 'foo_bar' )
7
+ expect ( simplifyModuleName ( 'foo/bar/' ) ) . toBe ( 'foo_bar' )
8
+ expect ( simplifyModuleName ( '/foo/bar' ) ) . toBe ( 'foo_bar' )
9
+ expect ( simplifyModuleName ( '/foo/bar/' ) ) . toBe ( 'foo_bar' )
10
+ expect ( simplifyModuleName ( 'foo/bar/index' ) ) . toBe ( 'foo_bar' )
11
+ expect ( simplifyModuleName ( 'foo/bar/index/' ) ) . toBe ( 'foo_bar' )
12
+ expect ( simplifyModuleName ( 'foo/bar/index.ts' ) ) . toBe ( 'foo_bar' )
13
+ expect ( simplifyModuleName ( 'node_modules/foo/bar/index.tsx' ) ) . toBe ( 'foo_bar' )
14
+ expect ( simplifyModuleName ( 'node_modules/foo/bar/index.jsx' ) ) . toBe ( 'foo_bar' )
15
+ expect ( simplifyModuleName ( 'foo/bar/index.mjs' ) ) . toBe ( 'foo_bar' )
16
+ expect ( simplifyModuleName ( 'foo/bar/index.cjs' ) ) . toBe ( 'foo_bar' )
17
+ expect ( simplifyModuleName ( 'node_modules/foo/bar/index.tsx' ) ) . toBe ( 'foo_bar' )
18
+ expect ( simplifyModuleName ( 'node_modules/foo/bar/index.jsx' ) ) . toBe ( 'foo_bar' )
19
+ expect ( simplifyModuleName ( 'node_modules/foo/bar/index.mjs' ) ) . toBe ( 'foo_bar' )
20
+ expect ( simplifyModuleName ( 'node_modules/foo/bar/index.cjs' ) ) . toBe ( 'foo_bar' )
21
+ } )
22
+ } )
Original file line number Diff line number Diff line change
1
+ import type { Chunk as ChunkInfo } from '@rolldown/debug'
2
+
3
+ export function guessChunkName ( chunk : ChunkInfo ) {
4
+ if ( chunk . name )
5
+ return chunk . name
6
+ if ( chunk . modules . length === 1 )
7
+ return `[${ simplifyModuleName ( chunk . modules [ 0 ] ! ) } ]`
8
+ if ( chunk . modules . length > 1 )
9
+ return `[${ simplifyModuleName ( `${ chunk . modules [ 0 ] } ` ) } _${ chunk . modules . length } ]`
10
+ return '[unnamed]'
11
+ }
12
+
13
+ export function simplifyModuleName ( module : string ) {
14
+ let parts = module
15
+ . replace ( / ^ .* ( \. p n p m | n o d e _ m o d u l e s | s r c | a p p | p a c k a g e s ) \/ / gi, '' ) // remove anything before node_modules or src
16
+ . replace ( / \b ( i n d e x | m a i n | d i s t | t e s t | c o m p o n e n t | c o m p o n e n t s ) \b / gi, '' ) // boring names
17
+ . replace ( / \/ + / g, '/' ) // duplicate slashes
18
+ . replace ( / \? .* $ / , '' ) // query string
19
+ . replace ( / \. \w + $ / , '' ) // extension
20
+ . replace ( / \W / g, '_' ) // non-alphanumeric characters
21
+ . replace ( / _ + / g, '_' ) // duplicate underscores
22
+ . replace ( / ^ _ + | _ + $ / g, '' ) // leading/trailing underscores
23
+ . replace ( / ( [ a - z ] ) ( [ A - Z ] ) / g, '$1_$2' ) // camel case to snake case
24
+ . toLowerCase ( )
25
+ . split ( '_' )
26
+ . filter ( Boolean )
27
+
28
+ parts = Array . from ( new Set ( parts ) )
29
+
30
+ if ( parts . length > 5 )
31
+ parts = parts . slice ( 0 , 5 )
32
+
33
+ return parts . join ( '_' )
34
+ }
You can’t perform that action at this time.
0 commit comments