In diesem Artikel geben wir einen Überblick über das Skript „analyseSizeChange“ im trpc-Quellcode.
Diese Datei hat die folgenden Funktionen:
1. Funktion „analysiereSizeChange“
2. Funktion Analyse
3. Geben Sie GitHubLogType
ein
4. Geben Sie GitHubLogOptions
ein
5. Funktion logNewModule
6. Funktion logDifference
7. Funktion logGithubMessage
8. Funktionsunterschied
9. Funktion „resolveJsonPaths“
10. FunktionsstreifenAnsiEscapes
11. FunktionsformatGithubOptions
12. FunktionsformatGithubMessage
Die wichtigste Funktion hier ist „analysateSizeChange“, da sie eine Funktion namens „onAnalysis“ hat.
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 und logNewModule befinden sich in derselben Datei und sind am gleichen Ort. Dies dient der Lesbarkeit und Wiederverwendbarkeit.
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 ruft eine Funktion namens logGithubMessage auf, die sich danach irgendwo am Ende derselben Datei befindet
Funktion.
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 ruft logGithubMessage- und Differenzfunktionen auf. An diesem Punkt können wir sehen, dass die Funktionshierarchie ist
Von oben nach unten werden Kernfunktionen höher eingestuft, während Einzelverantwortungsfunktionen niedriger eingestuft werden.
function logGithubMessage( type: GitHubLogType, message: string, options: GitHubLogOptions = {}, ) { console.log( stripAnsiEscapes( `::${type} ${formatGithubOptions(options)}::${formatGithubMessage( message, ) }`, ), ); }
logGithubMessage verwendet drei Funktionen – stripAnsiEscapes, formatGithubOptions und formatGithubMessage.
Bei Thinkthroo studieren wir große Open-Source-Projekte und stellen Architekturführer zur Verfügung. Wir haben mit Rückenwind resubale Komponenten entwickelt, die Sie in Ihrem Projekt nutzen können. Wir bieten Next.js-, React- und Node-Entwicklungsdienste an.
Buchen Sie einen Termin mit uns, um Ihr Projekt zu besprechen.
1. https://github.com/trpc/trpc/blob/next/scripts/analyzeSizeChange.ts
Das obige ist der detaillierte Inhalt vonanalysierenSizeChange-Skript im tRPC-Quellcode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!