tsconfig.app.json中的baseUrl没有覆盖tsconfig.json中的baseUrl

时间:2019-05-13 12:21:15

标签: angular angular6 angular7 typescript2.0

在Angular 6中,我使用的是 ng生成应用程序,因为我将有多个应用程序必须共享一些库。通过这种方法,我的文件夹结构如下:

  

projects-> app1-> tsconfig.app.json

     

projects-> app2-> tsconfig.app.json

tsconfig.json projects 文件夹位于同一级别

注意:当我们在Angular 6中使用 ng g应用程序时,将创建这样的文件夹结构。

我想在组件或服务等中使用相对路径进行这样的导入:

  

从“ src / services / example.service”导入{ExampleService};

不必像这样使用它:

  

从“ ../../../services/example.service”导入{ExampleService};

如何为如上所述创建的各个应用程序提供此功能?

我的tsconfig.json就是这样

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "downlevelIteration": true,
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

我的tsconfig.app.json是这样的:

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "outDir": "../../out-tsc/app",
    "types": ["node"]
  },
  "exclude": ["test.ts", "**/*.spec.ts"]
}

我尝试在tsconfig.app.json中给出这样的内容:

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "../../out-tsc/app",
    "types": ["node"]
  },
  "exclude": ["test.ts", "**/*.spec.ts"]
}

但这没用。

我想直接使用 src 使用相对路径来消除多级分辨率(../../../)

1 个答案:

答案 0 :(得分:0)

您应该查看paths中的tsconfig.json编译器选项。有了它,您可以例如执行以下操作:

"compilerOptions": {
  "paths": {
    "@services/*": [
      "src/services/*"
    ]
  }
} 

然后您可以使用以下路径从打字稿项目中的任何文件导入:

import { ExampleService } from '@services/example.service';

无需使用@,您可以随意命名