首页 > web前端 > js教程 > 正文

tRPC源代码中的analyzeSizeChange脚本

Barbara Streisand
发布: 2024-10-25 06:37:29
原创
990 人浏览过

在本文中,我们概述了 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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!