Maison  >  Article  >  interface Web  >  script analyseSizeChange dans le code source du tRPC

script analyseSizeChange dans le code source du tRPC

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 06:37:29991parcourir

Dans cet article, nous fournissons un aperçu du script analyseSizeChange dans le code source trpc.

Ce fichier a les fonctions suivantes :

1. func analyseSizeChange

2. fonction surAnalyse

3. tapez GitHubLogType

4. tapez GitHubLogOptions

5. func logNouveauModule

6. func logDifférence

7. func logGithubMessage

8. différence de fonction

9. func solveJsonPaths

10. bande fonctionnelleAnsiEscapes

11. format fonctionnelGithubOptions

12. format fonctionnelGithubMessage

analyzeSizeChange script in tRPC source code

La fonction la plus importante ici est analyserSizeChange car elle a une fonction nommée 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 et logNewModule sont dans ce même fichier et sont colocalisés. Ceci est à des fins de lisibilité et de réutilisabilité.

logNouveauModule :

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 appelle une fonction nommée logGithubMessage qui se trouve quelque part au bas de ce même fichier après ceci

fonction.

logDifférence :

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 appelle les fonctions logGithubMessage et différence, à ce stade, nous pouvons voir que la hiérarchie des fonctions est

de haut en bas, les fonctions principales sont classées plus haut tandis que les fonctions à responsabilité unique sont positionnées plus bas.

logGithubMessage

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

logGithubMessage utilise trois fonctions : stripAnsiEscapes, formatGithubOptions et formatGithubMessage.

À propos de nous :

Chez Thinkthroo, nous étudions les grands projets open source et fournissons des guides architecturaux. Nous avons développé des composants resubale, construits avec le vent arrière, que vous pouvez utiliser dans votre projet. Nous proposons des services de développement Next.js, React et Node.

Prenez rendez-vous avec nous pour discuter de votre projet.

analyzeSizeChange script in tRPC source code

analyzeSizeChange script in tRPC source code

Références :

1. https://github.com/trpc/trpc/blob/next/scripts/analyzeSizeChange.ts



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn