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

Monorepo迁移中如何阻止pnpm为@prisma/client创建符号链接?

解决pnpm Monorepo中@prisma/client独立实例问题

要实现类似Yarn Workspaces的nohoist效果,让每个服务拥有独立的@prisma/client及对应的.prisma文件,你可以通过以下步骤配置:

1. 在根package.json中配置全局nohoist

在Monorepo根目录的package.json里添加pnpm配置段,明确指定不hoist@prisma/client相关包:

{
  "pnpm": {
    "nohoist": ["**/@prisma/client", "**/@prisma/client/**"]
  }
}

这个配置会作用于所有工作区,确保每个服务的@prisma/client都被安装在自身的node_modules目录下,而非根目录。

2. 确保每个服务的Prisma生成路径正确

在每个服务的prisma/schema.prisma文件中,指定generator的输出目录为当前服务的node_modules/.prisma/client:

generator client {
  provider = "prisma-client-js"
  output   = "../node_modules/.prisma/client"
}

这一步能保证每个服务生成的类型文件和二进制文件都存放在自己的依赖目录中,不会被其他服务覆盖。

3. 清理缓存并重新安装

执行以下命令清除pnpm缓存并重新安装依赖,确保配置生效:

pnpm store prune
pnpm install

为什么之前的.npmrc配置没生效?

你尝试的public-hoist-pattern和hoist-pattern主要控制包的hoist范围,但pnpm中针对特定包的非hoist需求,通过package.json里的pnpm.nohoist配置优先级更高、匹配更精准。之前的规则可能因为模式匹配逻辑或优先级问题,未达到预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:17:07