我用lerna(the code in github)创建了一个monorepo。
内部有两个软件包,每个软件包都有导出sum
函数。
在app1
文件夹中,我想导入此函数,但vscode找不到该函数。
不知道为什么。我正确设置了所有内容,应该从两个路径提供vscode:
@packages/pck1
@packages/pck2
/tsconfig.json
{
"extends": "./tsconfig.build.json",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@packages/*": ["packages/*/src"]
},
"jsx": "react",
"esModuleInterop": true,
"skipLibCheck": true,
"types": []
}
}
如果您可以克隆我的仓库,请运行npm install
,然后打开vscode并转到apps/app1/src/index.ts
并输入sum
。等待打字稿找到功能。您将得到:
找不到原因,将不胜感激。
答案 0 :(得分:0)
如果您使用的是有作用域的程序包,它们将被称为@pck1
和@pck2
,而不是顶级@packages/SOMETHING
建议的tsconfig.json
。
我可以使您的示例工作如下:
将这些compilerOptions
添加到apps/app1/tsconfig.json
:
"baseUrl": ".",
"paths": {
"@pck1": ["../../packages/pck1/src"]
}
并更改apps/app1/src/index.ts
:
import { sum } from '@pck1';
sum(9,9);
您的基本错误是:您认为packages
是软件包名称的一部分,但这只是一个目录。我为此在github上创建了一个PR:https://github.com/wizardnet972/lerna-test/pull/1
我在github上有一个类似的lerna测试项目:https://github.com/gflohr/lerna-deps。在博客文章http://www.guido-flohr.net/lerna-mono-repos-with-internal-dependencies/中对此进行了解释。也许您可以以此为起点。