首頁  >  文章  >  web前端  >  tRPC原始碼中的analyzeSizeChange腳本

tRPC原始碼中的analyzeSizeChange腳本

Barbara Streisand
Barbara Streisand原創
2024-10-25 06:37:29991瀏覽

在本文中,我們概述了 trpc 原始碼中的analyzeSizeChange 腳本。

該檔案有以下功能:

1. funcanalyzeSizeChange

2. 函數分析

3. 輸入 GitHubLogType

4. 輸入 GitHubLogOptions

5. func logNewModule

6. func logDifference

7. func logGithubMessage

8. 功能區別

9. funcresolveJsonPaths

10. func stripAnsiEscapes

11. func formatGithubOptions

12. func 格式Github訊息

analyzeSizeChange script in tRPC source code

這裡最重要的函數是analyzeSizeChange,因為它有一個名為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 和 logNewModule 位於同一個檔案中並且位於相同位置。這是為了可讀性和可重用性目的。

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 在此之後呼叫名為 logGithubMessage 的函數,該函數位於同一檔案底部的某個位置

功能。

日誌差異:

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呼叫了logGithubMessage和difference函數,此時我們可以看到函數層次結構為

由上至下,核心功能排名較高,單一職責功能排名較低。

logGithub訊息

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

logGithubMessage 使用三個函式 — stripAnsiEscapes、formatGithubOptions 和 formatGithubMessage。

關於我們:

在 Thinkthroo,我們研究大型開源專案並提供架構指南。我們開發了使用 tailwind 建立的 resubale 元件,您可以在您的專案中使用它們。我們提供 Next.js、React 和 Node 開發服務。

與我們預約會面討論您的專案。

analyzeSizeChange script in tRPC source code

analyzeSizeChange script in tRPC source code

參考資料:

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



以上是tRPC原始碼中的analyzeSizeChange腳本的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn