Dans cet article, nous analysons l'utilisation d'Istanbul dans le code source du tRPC. J'ai trouvé ce commentaire - Istanbul ignore si. Cela laisse entendre que tRPC utilise Istanbul.js, un outil qui simplifie la couverture des tests JavaScript.
Celui-ci m'a mis du temps à comprendre que le référentiel tRPC utilise @vitest/coverage-istanbul, je cherchais au départ s'il y avait des scripts liés aux tests définis dans les packages/clients mais il n'y en avait aucun.
Après avoir recherché istanbul dans la base de code, c'est à ce moment-là que j'ai vu le mot Istanbul dans vitest.config.ts, les scripts de test sont définis dans le package.json du niveau racine.
"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",
Ci-dessous se trouve l'objet de couverture sélectionné dans 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 prend également en charge un autre fournisseur, il s'agit de « v8 ». Par défaut, le fournisseur est défini sur v8.
Voyons ce qui se passe lorsque le script de test est exécuté :
"test": "turbo codegen-tests && conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"",
tRPC utilise Turbo. Turbo est un bundler incrémentiel et un système de construction optimisé pour JavaScript et TypeScript, écrit en Rust.
codegen-tests est une commande définie dans turbo.json et lorsque vous l'exécutez, elle exécute les scripts codegen-tests définis dans les packages. Il s'agit d'une configuration monorepo.
scripts codegen dans les packages :
-client/package.json
- suivant/package.json
- réagir-query/package.json
- serveur/package.json
conc est un alias court pour simultanément. Paiement simultané.
Vous trouverez ci-dessous un exemple d'utilisation de simultanément.
concurrently "command1 arg" "command2 arg" (or) conc "command1 arg" "command2 arg"
tRPC utilise la commande ci-dessous :
conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"
Chez Thinkthroo, nous étudions les grands projets open source et fournissons des guides architecturaux. Nous avons développé des composants resubale, construits avec le vent arrière, que vous pouvez utiliser dans votre projet. Nous proposons des services de développement Next.js, React et Node.
Prenez rendez-vous avec nous pour discuter de votre projet.
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!