在本文中,我們分析了 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中文網其他相關文章!