In diesem Artikel analysieren wir die Verwendung von Istanbul im tRPC-Quellcode. Ich habe diesen Kommentar gefunden – Istanbul ignorieren wenn. Dies deutet darauf hin, dass tRPC Istanbul.js verwendet, ein Tool, das die JavaScript-Testabdeckung vereinfacht.
Es hat eine Weile gedauert, bis ich herausgefunden habe, dass das tRPC-Repository @vitest/coverage-istanbul verwendet. Ich habe zunächst nach Skripten gesucht, die sich auf Tests beziehen, die in Paketen/Clients definiert sind, aber es gab keine.
Nachdem ich in der gesamten Codebasis nach „Istanbul“ gesucht hatte, sah ich, dass das Wort „Istanbul“ in vitest.config.ts Testskripte in der package.json der Stammebene definiert ist.
"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",
Unten ist das Abdeckungsobjekt aufgeführt, das aus vitest.config.ts ausgewählt wurde:
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 unterstützt auch einen anderen Anbieter, nämlich „v8“. Standardmäßig ist der Anbieter auf v8 eingestellt.
Sehen wir uns an, was passiert, wenn das Testskript ausgeführt wird:
"test": "turbo codegen-tests && conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"",
tRPC verwendet Turbo. Turbo ist ein inkrementelles Bundler- und Build-System, das für JavaScript und TypeScript optimiert und in Rust geschrieben ist.
codegen-tests ist ein in turbo.json definierter Befehl. Wenn Sie ihn ausführen, werden in den Paketen definierte codegen-tests-Skripte ausgeführt. Dies ist ein Monorepo-Setup.
Codegen-Skripte in Paketen:
- client/package.json
- next/package.json
- React-Query/Package.json
- server/package.json
conc ist ein Kurzalias für concurrently. Gleichzeitig zur Kasse gehen.
Unten finden Sie ein Beispiel für die gleichzeitige Verwendung.
concurrently "command1 arg" "command2 arg" (or) conc "command1 arg" "command2 arg"
tRPC verwendet den folgenden Befehl:
conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"
Bei Thinkthroo studieren wir große Open-Source-Projekte und stellen Architekturführer zur Verfügung. Wir haben mit Rückenwind resubale Komponenten entwickelt, die Sie in Ihrem Projekt nutzen können. Wir bieten Next.js-, React- und Node-Entwicklungsdienste an.
Buchen Sie einen Termin mit uns, um Ihr Projekt zu besprechen.
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
Das obige ist der detaillierte Inhalt vonIstanbul-Verwendung im tRPC-Quellcode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!