Maison >interface Web >js tutoriel >script analyseSizeChange dans le code source du tRPC
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
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é.
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.
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.
function logGithubMessage( type: GitHubLogType, message: string, options: GitHubLogOptions = {}, ) { console.log( stripAnsiEscapes( `::${type} ${formatGithubOptions(options)}::${formatGithubMessage( message, ) }`, ), ); }
logGithubMessage utilise trois fonctions : stripAnsiEscapes, formatGithubOptions et formatGithubMessage.
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.
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!