在本文中,我们分析了 tRPC 源代码中的 Istanbul 使用情况。我发现了这个评论——伊斯坦布尔忽略如果。这暗示 tRPC 使用 Istanbul.js,这是一个使 JavaScript 测试覆盖率变得简单的工具。
这个花了我一段时间才弄清楚 tRPC 存储库使用 @vitest/coverage-istanbul,我最初想看看是否有任何与包/客户端中定义的测试相关的脚本,但没有。
在代码库中搜索 istanbul 后,我在 vitest.config 中看到了 Istanbul 一词。ts 测试脚本是在根级别的 package.json 中定义的。
"test": "turbo codegen-tests && conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"", "test-ci": "turbo codegen-tests && conc \"CI=true vitest run - coverage\" \"pnpm -F tests test-run:tsc\"", "test-watch": "vitest",
下面是从 vitest.config.ts 中选取的覆盖范围对象:
coverage: { provider: 'istanbul', include: ['**/src/**'], exclude: [ '**/www/**', '**/examples/**', // skip codecov for experimental features // FIXME: delete me once they're stable '**/next/src/app-dir/**', '**/server/src/adapters/next-app-dir/**', ], },
Vitest 还支持另一个提供商,它是“v8”。默认情况下,提供程序设置为 v8。
让我们看看测试脚本运行时会发生什么:
"test": "turbo codegen-tests && conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"",
tRPC 使用 Turbo。 Turbo 是一个增量捆绑器和构建系统,针对 JavaScript 和 TypeScript 进行了优化,用 Rust 编写。
codegen-tests 是在turbo.json 中定义的命令,当您运行它时,它会执行包中定义的codegen-tests 脚本。这是一个 monorepo 设置。
包中的codegen脚本:
- client/package.json
- next/package.json
-react-query/package.json
- 服务器/package.json
conc 是并发的简称。同时结账。
下面是并发的用法示例。
concurrently "command1 arg" "command2 arg" (or) conc "command1 arg" "command2 arg"
tRPC 使用以下命令:
conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"
在 Thinkthroo,我们研究大型开源项目并提供架构指南。我们开发了使用 tailwind 构建的 resubale 组件,您可以在您的项目中使用它们。我们提供 Next.js、React 和 Node 开发服务。
与我们预约会面讨论您的项目。
https://github.com/trpc/trpc/blob/next/packages/client/src/links/httpBatchLink.ts#L91C12-L91C30
https://github.com/gotwarlost/istanbul
https://istanbul.js.org/
https://github.com/istanbuljs
https://github.com/trpc/trpc/blob/d603d860a3aeb12bbf6e836abd8c5a30c7b5d7a5/vitest.config.ts#L45
以上是tRPC 源代码中的 Istanbul 使用的详细内容。更多信息请关注PHP中文网其他相关文章!