You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pnpm Monorepo中同步prisma与@prisma/client版本

如何在pnpm Monorepo中确保prisma与@prisma/client版本同步

你遇到的问题是pnpm Monorepo中prisma和@prisma/client补丁版本不一致,以下是几种可行的解决方案:

方案1:根目录添加prisma依赖并配合overrides

之前在根目录使用$prisma变量报错,是因为根package.json没有直接声明prisma依赖,导致pnpm无法解析该变量。解决方法如下:

  1. 在根package.json的devDependencies中添加prisma,版本与子项目保持一致:
{
  "devDependencies": {
    "@changesets/changelog-github": "^0.5.0",
    "@changesets/cli": "^2.27.6",
    "prisma": "^5.14.0"
  },
  "pnpm": {
    "overrides": {
      "@prisma/client": "$prisma"
    }
  }
}
  1. 执行pnpm install,此时整个工作区的@prisma/client会自动匹配根目录prisma的版本,强制两者同步。

方案2:利用pnpm peerDependencyRules强制版本匹配

如果不想在根目录添加prisma依赖,可以通过peerDependencyRules来约束版本范围:

在根package.json中添加以下配置:

{
  "pnpm": {
    "peerDependencyRules": {
      "allowedVersions": {
        "@prisma/client": "^5.14.0",
        "prisma": "^5.14.0"
      },
      "enforcePeerDependencies": true
    }
  }
}

这个配置会强制所有子项目中的prisma和@prisma/client版本都落在^5.14.0范围内,pnpm会自动选择一致的补丁版本来安装。

如果需要更严格的版本匹配(比如完全相同的补丁号),可以调整规则为:

{
  "pnpm": {
    "peerDependencyRules": {
      "resolvePeerConflictFromDependencies": true,
      "allowedVersions": {
        "@prisma/client": "=5.16.1",
        "prisma": "=5.16.1"
      }
    }
  }
}

注意:这种方式需要手动指定具体版本,适合需要固定版本的场景。

方案3:在子项目中锁定精确版本

如果不需要灵活的版本范围,可以直接在子项目的package.json中指定精确版本(去掉^前缀):

比如/package/package.json:

{
  "peerDependencies": {
    "@prisma/client": "5.16.1"
  },
  "devDependencies": {
    "prisma": "5.16.1"
  }
}

/dev-test/package.json:

{
    "dependencies": {
        "@prisma/client": "5.16.1",
        "prisma-extension-pgvector": "workspace:^"
    },
    "devDependencies": {
        "prisma": "5.16.1"
    }
}

这种方式最直接,但版本更新时需要手动修改所有子项目的版本号。


内容的提问来源于stack exchange,提问作者philolegein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:56:08