pnpm workspace 里怎么正确引用本地包?
我在用 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:*"
}
}
关键检查这几步:
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 重装也是个办法。1. 确保被引用的包
@myorg/ui的package.json里有"name": "@myorg/ui"2. 在主应用里这么写依赖:
搞定