Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/nuxtPublic

Commitbce8248

Browse files
committed
build: remove babel debugging plugin from jiti stub options
1 parent1d2c0c2 commitbce8248

File tree

11 files changed

+129
-207
lines changed

11 files changed

+129
-207
lines changed

‎debug/build-config.ts‎

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,8 @@
1-
import{fileURLToPath}from'node:url'
21
importprocessfrom'node:process'
32

43
importtype{InputPluginOption}from'rollup'
5-
importtype{BuildOptions}from'unbuild'
64

7-
import{AnnotateFunctionTimingsPlugin}from'./plugins/timings-unbuild'
8-
9-
exportconststubOptions={
10-
jiti:{
11-
transformOptions:{
12-
babel:{
13-
plugins:(process.env.TIMINGS_DEBUG ?[fileURLToPath(newURL('./plugins/timings-babel.mjs',import.meta.url))] :[])asany,
14-
},
15-
},
16-
},
17-
absoluteJitiPath:true,
18-
}satisfiesBuildOptions['stubOptions']
5+
import{AnnotateFunctionTimingsPlugin}from'./plugins/timings-unbuild.ts'
196

207
exportfunctionaddRollupTimingsPlugin(options:{plugins:InputPluginOption[]}){
218
if(process.env.TIMINGS_DEBUG){

‎debug/plugins/timings-babel.d.mts‎

Lines changed: 0 additions & 11 deletions
This file was deleted.

‎debug/plugins/timings-babel.mjs‎

Lines changed: 0 additions & 165 deletions
This file was deleted.

‎debug/plugins/timings-unbuild.ts‎

Lines changed: 121 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import { walk } from 'estree-walker'
44
importtype{Node}from'estree-walker'
55
importMagicStringfrom'magic-string'
66
importtsBlankSpacefrom'ts-blank-space'
7-
8-
import{generateFinallyCode,generateInitCode,leading,trailing}from'./timings-babel.mjs'
7+
import{fileURLToPath}from'node:url'
98

109
declare global{
1110

@@ -56,3 +55,123 @@ export function AnnotateFunctionTimingsPlugin (): Plugin {
5655
},
5756
}satisfiesPlugin
5857
}
58+
59+
constmetricsPath=fileURLToPath(newURL('../../debug-timings.json',import.meta.url))
60+
61+
// inlined from https://github.com/danielroe/errx
62+
functioncaptureStackTrace(){
63+
constIS_ABSOLUTE_RE=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[a-z]:[/\\]/i
64+
constLINE_RE=/^\s+at(?:(?<function>[^)]+)\()?(?<source>[^)]+)\)?$/u
65+
constSOURCE_RE=/^(?<source>.+):(?<line>\d+):(?<column>\d+)$/u
66+
67+
if(!Error.captureStackTrace){
68+
return[]
69+
}
70+
// eslint-disable-next-line unicorn/error-message
71+
conststack=newError()
72+
Error.captureStackTrace(stack)
73+
consttrace=[]
74+
for(constlineofstack.stack?.split('\n')||[]){
75+
constparsed=LINE_RE.exec(line)?.groups
76+
if(!parsed){
77+
continue
78+
}
79+
if(!parsed.source){
80+
continue
81+
}
82+
constparsedSource=SOURCE_RE.exec(parsed.source)?.groups
83+
if(parsedSource){
84+
Object.assign(parsed,parsedSource)
85+
}
86+
if(IS_ABSOLUTE_RE.test(parsed.source)){
87+
parsed.source=`file://${parsed.source}`
88+
}
89+
if(parsed.source===import.meta.url){
90+
continue
91+
}
92+
for(constkeyof['line','column']){
93+
//@ts-expect-error changing type from string to number
94+
parsed[key]&&=Number(parsed[key])
95+
}
96+
trace.push(parsed)
97+
}
98+
returntrace
99+
}
100+
101+
exportconstleading=`
102+
import { writeFileSync as ____writeFileSync } from 'node:fs'
103+
const ___captureStackTrace =${captureStackTrace.toString()};
104+
globalThis.___calls ||= {};
105+
globalThis.___timings ||= {};
106+
globalThis.___callers ||= {};`
107+
108+
functiononExit(){
109+
if(globalThis.___logged){return}
110+
globalThis.___logged=true
111+
112+
____writeFileSync(metricsPath,JSON.stringify(Object.fromEntries(Object.entries(globalThis.___timings).map(([name,time])=>[
113+
name,
114+
{
115+
time:Number(Number(time).toFixed(2)),
116+
calls:globalThis.___calls[name],
117+
callers:globalThis.___callers[name] ?Object.fromEntries(Object.entries(globalThis.___callers[name]).map(([name,count])=>[name.trim(),count]).sort((a,b)=>typeofb[0]==='string'&&typeofa[0]==='string' ?a[0].localeCompare(b[0]) :0)) :undefined,
118+
},
119+
]).sort((a,b)=>typeofb[0]==='string'&&typeofa[0]==='string' ?a[0].localeCompare(b[0]) :0)),null,2))
120+
121+
// worst by total time
122+
consttimings=Object.entries(globalThis.___timings)
123+
124+
consttopFunctionsTotalTime=timings
125+
.sort((a,b)=>b[1]-a[1])
126+
.slice(0,20)
127+
.map(([name,time])=>({
128+
name,
129+
time:Number(Number(time).toFixed(2)),
130+
calls:globalThis.___calls[name],
131+
callers:globalThis.___callers[name]&&Object.entries(globalThis.___callers[name]).map(([name,count])=>`${name.trim()} (${count})`).join(', '),
132+
}))
133+
134+
// eslint-disable-next-line no-console
135+
console.log('Top 20 functions by total time:')
136+
// eslint-disable-next-line no-console
137+
console.table(topFunctionsTotalTime)
138+
139+
// worst by average time (excluding single calls)
140+
consttopFunctionsAverageTime=timings
141+
.filter(([name])=>(globalThis.___calls[name]||0)>1)
142+
.map(([name,time])=>[name,time/(globalThis.___calls[name]||1)]asconst)
143+
.sort((a,b)=>b[1]-a[1])
144+
.slice(0,20)
145+
.map(([name,time])=>({
146+
name,
147+
time:Number(Number(time).toFixed(2)),
148+
calls:name&&globalThis.___calls[name],
149+
callers:name&&globalThis.___callers[name]&&Object.entries(globalThis.___callers[name]).sort((a,b)=>b[1]-a[1]).map(([name,count])=>`${name.trim()} (${count})`).join(', '),
150+
}))
151+
152+
// eslint-disable-next-line no-console
153+
console.log('Top 20 functions by average time:')
154+
// eslint-disable-next-line no-console
155+
console.table(topFunctionsAverageTime)
156+
}
157+
158+
exportconsttrailing=`process.on("exit",${onExit.toString().replace('metricsPath',JSON.stringify(metricsPath))})`
159+
160+
exportfunctiongenerateInitCode(functionName:string){
161+
return`
162+
___calls[${JSON.stringify(functionName)}] = (___calls[${JSON.stringify(functionName)}] || 0) + 1;
163+
___timings[${JSON.stringify(functionName)}] ||= 0;
164+
const ___now = Date.now();`
165+
}
166+
167+
exportfunctiongenerateFinallyCode(functionName:string){
168+
return`
169+
___timings[${JSON.stringify(functionName)}] += Date.now() - ___now;
170+
try {
171+
const ___callee = ___captureStackTrace()[1]?.function;
172+
if (___callee) {
173+
___callers[${JSON.stringify(functionName)}] ||= {};
174+
___callers[${JSON.stringify(functionName)}][' ' + ___callee] = (___callers[${JSON.stringify(functionName)}][' ' + ___callee] || 0) + 1;
175+
}
176+
} catch {}`
177+
}

‎packages/kit/build.config.ts‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import{defineBuildConfig}from'unbuild'
2-
import{addRollupTimingsPlugin,stubOptions}from'../../debug/build-config'
2+
import{addRollupTimingsPlugin}from'../../debug/build-config.ts'
33

44
exportdefaultdefineBuildConfig({
55
declaration:true,
66
entries:[
77
'src/index',
88
],
9-
stubOptions,
109
hooks:{
1110
'rollup:options'(ctx,options){
1211
addRollupTimingsPlugin(options)

‎packages/nitro-server/build.config.ts‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import{defineBuildConfig}from'unbuild'
2-
import{addRollupTimingsPlugin,stubOptions}from'../../debug/build-config'
2+
import{addRollupTimingsPlugin}from'../../debug/build-config.ts'
33

44
exportdefaultdefineBuildConfig({
55
declaration:true,
66
entries:[
77
'src/index',
88
{input:'src/runtime/',outDir:'dist/runtime',ext:'js'},
99
],
10-
stubOptions,
1110
hooks:{
1211
'rollup:options'(ctx,options){
1312
addRollupTimingsPlugin(options)

‎packages/nuxt/build.config.ts‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
importtype{BuildEntry}from'unbuild'
22
import{defineBuildConfig}from'unbuild'
3-
import{addRollupTimingsPlugin,stubOptions}from'../../debug/build-config'
3+
import{addRollupTimingsPlugin}from'../../debug/build-config.ts'
44

55
exportdefaultdefineBuildConfig({
66
declaration:true,
@@ -17,7 +17,6 @@ export default defineBuildConfig({
1717
'pages',
1818
].map(name=>({input:`src/${name}/runtime/`,outDir:`dist/${name}/runtime`,format:'esm',ext:'js'}asBuildEntry)),
1919
],
20-
stubOptions,
2120
hooks:{
2221
'mkdist:entry:options'(_ctx,_entry,mkdistOptions){
2322
mkdistOptions.addRelativeDeclarationExtensions=true

‎packages/rspack/build.config.ts‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import{defineBuildConfig}from'unbuild'
2-
import{addRollupTimingsPlugin,stubOptions}from'../../debug/build-config'
3-
importconfigfrom'../webpack/build.config'
2+
import{addRollupTimingsPlugin}from'../../debug/build-config.ts'
3+
importconfigfrom'../webpack/build.config.ts'
44

55
exportdefaultdefineBuildConfig({
66
...config[0],
@@ -9,7 +9,6 @@ export default defineBuildConfig({
99
'#builder',
1010
'@nuxt/schema',
1111
],
12-
stubOptions,
1312
hooks:{
1413
'rollup:options'(ctx,options){
1514
addRollupTimingsPlugin(options)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp