Prisma ClientSetup and Configuration

Generating Prisma Client

This page explains how to generate Prisma Client. It also provides additional context on the generated client, typical workflows and Node.js configuration.

Prisma Client is a generated database client that's tailored to your database schema. By default, Prisma Client is generated into the node_modules/.prisma/client folder, but we highly recommend you specify an output location.

To generate and instantiate Prisma Client:

  1. Ensure that you have Prisma CLI installed on your machine.

    npm install prisma --save-dev
  2. Add the following generator definition to your Prisma schema:

    generator client {
      provider = "prisma-client"
      output   = "./generated"
    }
  3. Install the @prisma/client npm package:

    npm install @prisma/client
  4. Generate Prisma Client with the following command:

    npx prisma generate
  5. You can now instantiate Prisma Client in your code:

    import { PrismaClient } from "./prisma/generated/client";
    const prisma = new PrismaClient();
    // use `prisma` in your application to read and write data in your DB

Important: You need to re-run the prisma generate command after every change that's made to your Prisma schema to update the generated Prisma Client code.

Here is a graphical illustration of the typical workflow for generation of Prisma Client:

Graphical illustration of the typical workflow for generation of Prisma Client

The location of Prisma Client

Using a custom output path

You can also specify a custom output path on the generator configuration, for example (assuming your schema.prisma file is located at the default prisma subfolder):

generator client {
  provider = "prisma-client"
  output   = "../src/generated/"
}

After running prisma generate for that schema file, the Prisma Client package will be located in:

./src/generated/client

To import the PrismaClient from a custom location (for example, from a file named ./src/script.ts):

import { PrismaClient } from "./generated/client";

Loading environment variables

To load environment variables in your Prisma application, you can use the prisma.config.ts file along with the env helper from prisma/config. This approach provides better type safety and configuration management.

  1. First, install the required dependency:

    npm install dotenv --save-dev
  2. Create a .env file in your project root (if it doesn't exist) and add your database connection string:

    DATABASE_URL="your_database_connection_string_here"
  3. Update your prisma.config.ts file in your project root:

    import "dotenv/config";
    import { defineConfig, env } from "prisma/config";
    
    export default defineConfig({
      schema: "prisma/schema.prisma",
      migrations: {
        path: "prisma/migrations",
      },
      datasource: {
        url: env("DATABASE_URL"),
      },
    });

The @prisma/client npm package

The @prisma/client npm package consists of two key parts:

  • The @prisma/client module itself, which only changes when you re-install the package
  • The .prisma/client folder, which is the default location for the unique Prisma Client generated from your schema

@prisma/client/index.d.ts exports .prisma/client:

export * from ".prisma/client";

This means that you still import @prisma/client in your own .ts files:

import { PrismaClient } from "@prisma/client";

Prisma Client is generated from your Prisma schema and is unique to your project. Each time you change the schema (for example, by performing a schema migration) and run prisma generate, Prisma Client's code changes:

The .prisma and @prisma folders

The .prisma folder is unaffected by pruning in Node.js package managers.

On this page