是这样的,我在一个仓库中创建了 pnpm monorepo:
packages:
- 'packages/*'
- 'pages'
我在 packages/hagao/
目录创建了一个 ts 工程,是一个很简单的库:
packages/hagao:
- src/index.ts
package.json
这个工程只导出了一个 aaa 变量用于测试:
// packages/hagao/src/index.ts
export const aaa = 1
这个 hagao
包的名称是:
{
"name": "@jamcaalaa/hagao"
}
然后我在 pages
下创建了一个 Vue3 Vite Ts 工程,包名称叫 page
,用于做个 SPA 页面,并把 @jamcaalaa/hagao
安装至此:
# repo 根目录
pnpm add @jamcaalaa/hagao --filter page
但是在 page 项目中导入 aaa 变量会报错,找不到模块:
我发现一个兄弟也这么干过:github.com/kongweigen/pg-kit,但是他的组件包并不是 scope 包,即名称不是 @
起头的,我也尝试过,的确没问题,我的是有 scope 的就一直报错。
我在 Google 上找答案,找到一个折衷的办法,就是在 page 包的 tsconfig.json
中声明 path,于是就能正常提示了:
但是我观察到 vuejs 的 packages 并不需要这样声明 path 也可以用,我不知道是哪里出了差错,是不是两个 package 的 typescript 不通用的原因?
已通过添加 scope 包的 package.json
exports
字段解决