如何在生产中运行`prismagenerate`?

问题描述 投票:0回答:4

我对 Prisma 代码生成在生产中的工作原理感到困惑。 Prisma CLI 应该安装在 devDependency 中,但

npx prisma generate
命令需要在生产中可用,因为生成的代码对于应用程序是必需的。我该如何解决这个问题?我尝试运行
npm i --production
npx prisma generate
,这导致了 npx 尝试自动安装 prisma 并获取 Prisma 1 而不是 Prisma 2 的预期问题,然后期望得到一个不存在的 prisma.yml 文件。

node.js prisma prisma2
4个回答
3
投票

无需运行安装

prisma generate
时执行的
@prisma/client
命令。

编辑: https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/generate-prisma-client


1
投票

这就是我在 package.json 文件中所做的(这是在 Versel 上部署 Next 应用程序)我刚刚将生成命令添加到构建脚本中:

"scripts": {
    "dev": "next dev",
    "build": "prisma generate && next build",
    "start": "next start",
    "lint": "next lint"
  },

但不确定这是否是正确的方法..


0
投票

Prisma 有多种在不同环境下安装的指南。 例如,这个讲的是在 vercel 上安装。

https://www.prisma.io/docs/guides/deployment/deployment-guides/deploying-to-vercel

安装后挂钩 package.json 使用 postinstall 挂钩脚本来运行 prisma generated。通常这会在构建步骤中进行。由于 Vercel 在安装依赖项后会缓存 node_modules,因此这些函数将无法访问生成的 Prisma 客户端。

在安装后生成 Prisma 客户端可确保在 node_modules/@prisma/client 中生成的 Prisma 客户端可供功能使用。


0
投票

您不需要在生产中安装generate,该包有一个postinstall钩子:

@prisma/client 包定义了自己的安装后钩子,每当安装包时都会执行该钩子。该挂钩调用 prismagenerate 命令,该命令又将 Prisma 客户端代码生成到默认位置node_modules/.prisma/client。请注意,这需要 prisma CLI 可用,无论是作为本地依赖项还是作为全局安装。建议始终使用 npm install prisma --save-dev 将 prisma 包安装为开发依赖项,以避免版本冲突。

文档:https://www.prisma.io/docs/orm/prisma-client/setup-and-configuration/geneating-prisma-client#generating-prisma-client-in-the-postinstall-hook-of-棱镜客户端

© www.soinside.com 2019 - 2024. All rights reserved.