typescript - Del prisma-typer og enum på tvers av flere prosjekter
For øyeblikket utvikler jeg en API som gir data ved hjelp av Prisma. Denne API-en brukes av flere prosjekter. I API-en genererer jeg typer ved å bruke Prisma.ModelGetPayload for å definere returtypene for enkelte API-responser.
import { Prisma } from "@prisma/client";
export const minimalSelect = Prisma.validator<Prisma.ModelXYSelect>()({
id: true,
name: true
});
export type MinimalModelXY = Prisma.ModelXYGetPayload<{
select: typeof minimalSelect;
}>;
Eller enums kan enkelt importeres fra Prisma-klienten.
import { EnumXY } from "@prisma/client";
Disse enumene og typedefinisjonene er avhengige av den genererte Prisma-klienten til API-en.
Det finnes løsninger hvor hele Prisma-klienten blir hentet ut i en npm-pakke (se her), men dette er ikke hva jeg ønsker å gjøre.
Er det mulig å trekke ut disse typene til en npm-pakke for å dele dem mellom flere prosjekter uten å trekke ut hele Prisma-klienten?
Svar #1
Hvis du vil eksportere alle typene som genereres av Prisma, kan du finne alle på node_modules/.prisma/client/index.d.ts
Du kan bare eksportere denne filen i en npm-pakke og bruke den i frontend-applikasjonen.
En annen tilnærming du kan bruke er å publisere din schema.prisma til en npm-pakke. Deretter kan du i ditt andre prosjekt generere et Prisma-klientbibliotek fra schema.prisma-filen, på denne måten vil du ikke trenge å eksportere PrismaClient.
Svar #2
For alle som har denne bruken i fremtiden, hadde jeg det samme problemet, så jeg laget en generator for å eksportere typene til Prisma-klienten din til en spesifisert katalog og fjerne de kompilerte JS-filene.
npm install -D prisma-types-exportLegg til følgende i filen din
schema.prisma:generator types { provider = "prisma-types-export" output = "./prisma-types" }npx prisma generate
