pnpm workspace 里怎么正确引用本地包?

FSD-鑫平 阅读 10

我在用 pnpm workspace 搭建 monorepo,主应用想引入另一个 package 里的组件,但总是报模块找不到。

我已经在根目录的 pnpm-workspace.yaml 里配置了 packages 路径,也执行了 pnpm install,但 import 时还是提示 Cannot find module ‘@myorg/ui’。是不是还需要在 package.json 里加什么配置?

{
  "name": "@myorg/app",
  "dependencies": {
    "@myorg/ui": "workspace:*"
  }
}
我来解答 赞 7 收藏
二维码
手机扫码查看
2 条解答
翌萌的笔记
这个问题我也踩过坑,官方文档里说要在 package.json 里配置 workspaces,但实际不止这样。

关键检查这几步:
1. 确保 pnpm-workspace.yaml 配置正确,比如:

- 'packages/*'


2. 你的 package.json 配置其实是对的,"@myorg/ui": "workspace:*" 这个写法没问题

3. 容易漏掉的是:必须先在 @myorg/ui 这个包里执行一次 pnpm publish --dry-run(或者直接 pnpm pack),这样才会生成有效的本地链接

4. 最后在主应用跑 pnpm install 时,看下 terminal 输出有没有成功链接本地包

如果还不行,可以试试在根目录跑 pnpm install -r 重新安装所有 workspace 包。有时候 pnpm 的依赖解析会抽风,删掉 node_modules 和 lockfile 重装也是个办法。
点赞
2026-03-06 10:04
技术统勋
检查下两件事:
1. 确保被引用的包@myorg/ui的package.json里有"name": "@myorg/ui"
2. 在主应用里这么写依赖:
"dependencies": {
"@myorg/ui": "workspace:*"
}

搞定
点赞
2026-03-06 10:01