Heim  >  Artikel  >  Web-Frontend  >  analysierenSizeChange-Skript im tRPC-Quellcode

analysierenSizeChange-Skript im tRPC-Quellcode

Barbara Streisand
Barbara StreisandOriginal
2024-10-25 06:37:29991Durchsuche

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

analyzeSizeChange script in tRPC source code

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.

logNewModule:

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.

logDifference:

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.

logGithubMessage

function logGithubMessage(
 type: GitHubLogType,
 message: string,
 options: GitHubLogOptions = {},
) {
 console.log(
   stripAnsiEscapes(
   `::${type} ${formatGithubOptions(options)}::${formatGithubMessage(
   message,
   )
}`,
),
 );
}

logGithubMessage verwendet drei Funktionen – stripAnsiEscapes, formatGithubOptions und formatGithubMessage.

Über uns:

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.

analyzeSizeChange script in tRPC source code

analyzeSizeChange script in tRPC source code

Referenzen:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn