Angular 6 / 在 tsconfig.lib.json 中声明库的路径

Sav*_*nah 7 path compiler-options tsconfig angular angular-library

我正在尝试为Angular 6库配置路径(我已成功为以前的 Angular 项目配置了路径)

这是tsconfig.json文件中我以前的应用程序的工作:

"compilerOptions": {
    [...]
    "baseUrl": "src",
    "paths": {
      "@class/*": [ "app/class/*" ],
      "@services/*": [ "app/services/*" ],
      "@views/*": [ "app/views/*" ]
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用它,例如:

Import { Item } form '@class/item';
Run Code Online (Sandbox Code Playgroud)

在我的新应用程序中,我在tsconfig.**lib**.json文件中尝试相同的方式:

"compilerOptions": {
    [...]
    "baseUrl": "src",
    "paths": {
      "@class/*": [ "lib/class/*" ],
      "@services/*": [ "lib/services/*" ],
      "@views/*": [ "lib/views/*" ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图像这样为我的库在组件中导入一个类,但它不起作用(VSCode 找不到该文件):

Import { Item } form '@class/item';
Run Code Online (Sandbox Code Playgroud)

请注意,import主项目中的语句正在起作用:

Import { Item } from 'myLibrary';
Run Code Online (Sandbox Code Playgroud)

知道我做得不好吗?

谢谢你的帮助。

Jan*_*rju 8

这是我上面的评论,如果您认为这是正确的答案。

Angular 将使用该tsconfig.json文件,该angular.json文件在**architect --> build --> options --> tsconfig**. 而VS Code使用tsconfig.json位于工作区底部的文件。您需要在两个配置中添加路径以使它们都能正常工作,或者更改项目以使用文件tsconfig.json中的基本文件angular.json

tsconfig.json文件有一个扩展属性,它将以另一个文件为基础并覆盖文件中声明的所有内容tsconfig.lib.json。因此,如果您在文件中声明了路径tsconfig.lib.json,则文件中不再需要这些路径tsconfig.json

编辑 2019 年 7 月 29 日 tsconfig.json

"baseUrl": "src",
"paths": {
  "@ProjectName1/*": ["../projects/ProjectName1/src/app/modules/*"],
  "@Projectname2/*": ["../projects/Projectname2/src/app/modules/*"],
  "@environment/*": ["environments/*"],
  "project-core": ["../dist/project/project-core"],
  "project-core/*": ["../dist/project/project-core/*"]
}
Run Code Online (Sandbox Code Playgroud)

目前我没有在 tsconfig.app.json 中声明路径,因为它与 tsconfig.json 中的路径相同。所以这与我之前的答案不同,因为我仅在 tsconfig.json 中有路径。