为什么vscode在打字稿monorepo的包内没有智能感知功能?

时间:2020-09-05 16:03:42

标签: node.js typescript visual-studio-code lerna monorepo

我用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。等待打字稿找到功能。您将得到:

enter image description here

找不到原因,将不胜感激。

1 个答案:

答案 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/中对此进行了解释。也许您可以以此为起点。