问题一、在子包之间互相引用函数时,如果只一味的配置tsconfig中path配置,是不行的,需要pnpm去下载workspace下子包建立软连接才是正解。
| 维度 | tsconfig paths | workspace 依赖 |
|---|---|---|
| 作用对象 | TypeScript 编译器 | Node / bundler / runtime |
| 是否影响运行 | ❌ 不影响 | ✅ 真实依赖 |
| 是否生成 node_modules | ❌ | ✅(软链接) |
| 是否有版本关系 | ❌ | ✅ |
| 是否可发布 | ❌ | ✅ |
| 是否符合 npm 生态 | ❌ | ✅ |
如果你只配了 paths:
-
TS 编译 ✔️
-
IDE 提示 ✔️
-
Node 运行 ❌(找不到模块)
除非你:
-
用了 webpack / vite alias
-
或 ts-node + tsconfig-paths
-
或打包时重写 import
2️⃣ 打包器需要额外配置
你必须同步配置:
javascript
// vite.config.ts
resolve: {
alias: {
'@shared': path.resolve(__dirname, '../shared/src')
}
}
否则:
-
dev ✔️
-
build ❌