Maison > interface Web > js tutoriel > le corps du texte

script analyseSizeChange dans le code source du tRPC

Barbara Streisand
Libérer: 2024-10-25 06:37:29
original
990 Les gens l'ont consulté

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);
 }
 …
 })
}
Copier après la connexion

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);
}
Copier après la connexion

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);
}
Copier après la connexion

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,
   )
}`,
),
 );
}
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!