Rumah >hujung hadapan web >tutorial js >skrip analyzeSizeChange dalam kod sumber tRPC
Dalam artikel ini, kami menyediakan gambaran keseluruhan skrip analyzeSizeChange dalam kod sumber trpc.
Fail ini mempunyai fungsi berikut:
1. func analysisSizeChange
2. func onAnalysis
3. taip GitHubLogType
4. taip GitHubLogOptions
5. func logNewModule
6. func logDifference
7. fungsi logGithubMessage
8. perbezaan fungsi
9. fungsi resolveJsonPaths
10. func stripAnsiEscapes
11. func formatGithubOptions
12. func formatGithubMessage
Fungsi paling penting di sini ialah analyzeSizeChange kerana ia mempunyai fungsi bernama onAnalysis.
export default function analyzeSizeChange(packageDir: string) { let analyzePluginIterations = 0; return analyze({ summaryOnly: process.env.CI ? undefined : true, skipFormatted: process.env.CI ? true : undefined, onAnalysis: (analysis) => { … // calls logDifference if (prevModule) { logDifference( `Module '${module.id}'`, prevModule.size, module.size, ); } else { logNewModule(module.id, module.size); } … }) }
logDifference dan logNewModule berada dalam fail yang sama ini dan disusun. Ini adalah untuk tujuan kebolehbacaan dan kebolehgunaan semula.
function logNewModule(name: string, size: number) { if (size < ABSOLUTE_BYTE_CHANGE_THRESHOLD) { return; } const type = 'notice'; const options = { title: `New Module (${size} bytes in ${name})`, }; const message = `${name} size: ${size} bytes`; logGithubMessage(type, message, options); }
logNewModule memanggil fungsi bernama logGithubMessage yang terletak di suatu tempat di bahagian bawah fail yang sama selepas ini
fungsi.
function logDifference(name: string, before: number, after: number) { const change = difference(before, after); if ( change.absolute < ABSOLUTE_BYTE_CHANGE_THRESHOLD && change.percent < PERCENT_CHANGE_THRESHOLD ) { return; } const type = 'error'; const options = { title: `Important Size Change (${change.absolute} bytes in ${name})`, }; const message = `${name} size change: ${ change.absolute } bytes (${change.percent.toFixed(2)}%)`; logGithubMessage(type, message, options); }
logDifference memanggil logGithubMessage dan fungsi perbezaan, pada ketika ini, kita dapat melihat bahawa fungsi heierarki ialah
dari atas ke bawah, fungsi teras diberi kedudukan lebih tinggi manakala fungsi tanggungjawab tunggal diletakkan lebih rendah.
function logGithubMessage( type: GitHubLogType, message: string, options: GitHubLogOptions = {}, ) { console.log( stripAnsiEscapes( `::${type} ${formatGithubOptions(options)}::${formatGithubMessage( message, ) }`, ), ); }
logGithubMessage menggunakan tiga fungsi — stripAnsiEscapes, formatGithubOptions dan formatGithubMessage.
Di Thinkthroo, kami mengkaji projek sumber terbuka yang besar dan menyediakan panduan seni bina. Kami telah membangunkan Komponen resubale, dibina dengan tailwind, yang boleh anda gunakan dalam projek anda. Kami menawarkan perkhidmatan pembangunan Next.js, React dan Node.
Tempah mesyuarat dengan kami untuk menyelesaikan projek anda.
1. https://github.com/trpc/trpc/blob/next/scripts/analyzeSizeChange.ts
Atas ialah kandungan terperinci skrip analyzeSizeChange dalam kod sumber tRPC. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!