Rumah  >  Artikel  >  hujung hadapan web  >  skrip analyzeSizeChange dalam kod sumber tRPC

skrip analyzeSizeChange dalam kod sumber tRPC

Barbara Streisand
Barbara Streisandasal
2024-10-25 06:37:29991semak imbas

Dalam artikel ini, kami menyediakan gambaran keseluruhan skrip analyzeSizeChange dalam kod sumber trpc.

Fail ini mempunyai fungsi berikut:

1. func analysisSizeChange

2. func onAnalysis

3. taip GitHubLogType

4. taip GitHubLogOptions

5. func logNewModule

6. func logDifference

7. fungsi logGithubMessage

8. perbezaan fungsi

9. fungsi resolveJsonPaths

10. func stripAnsiEscapes

11. func formatGithubOptions

12. func formatGithubMessage

analyzeSizeChange script in tRPC source code

Fungsi paling penting di sini ialah analyzeSizeChange kerana ia mempunyai fungsi bernama 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 dan logNewModule berada dalam fail yang sama ini dan disusun. Ini adalah untuk tujuan kebolehbacaan dan kebolehgunaan semula.

logNewModul:

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 memanggil fungsi bernama logGithubMessage yang terletak di suatu tempat di bahagian bawah fail yang sama selepas ini

fungsi.

Perbezaan log:

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 memanggil logGithubMessage dan fungsi perbezaan, pada ketika ini, kita dapat melihat bahawa fungsi heierarki ialah

dari atas ke bawah, fungsi teras diberi kedudukan lebih tinggi manakala fungsi tanggungjawab tunggal diletakkan lebih rendah.

logGithubMessage

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

logGithubMessage menggunakan tiga fungsi — stripAnsiEscapes, formatGithubOptions dan formatGithubMessage.

Tentang kami:

Di Thinkthroo, kami mengkaji projek sumber terbuka yang besar dan menyediakan panduan seni bina. Kami telah membangunkan Komponen resubale, dibina dengan tailwind, yang boleh anda gunakan dalam projek anda. Kami menawarkan perkhidmatan pembangunan Next.js, React dan Node.

Tempah mesyuarat dengan kami untuk menyelesaikan projek anda.

analyzeSizeChange script in tRPC source code

analyzeSizeChange script in tRPC source code

Rujukan:

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



Atas ialah kandungan terperinci skrip analyzeSizeChange dalam kod sumber tRPC. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn