扩展tsconfig.json文件似乎没有扩展任何内容

时间:2019-10-11 08:21:21

标签: typescript tsconfig

我有一个项目,需要从中构建两种不同的产品。说我有

./src/advanced
./src/basic

所有代码都是用Typescript编写的,因此我需要使用tsc

进行编译

因此,我创建了3个 tsconfig 文件

tsconfig-base.json

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "noImplicitAny": false,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./src",
    "lib": ["es2018", "dom", "dom", "dom.iterable", "es6"],
    "importHelpers": true,
  },
  "exclude": ["node_modules", "**/*.spec.ts","dist"]

现在要构建我拥有的basic产品

tsconfig-basic.json

{
  "extends": "./tsconfig-base.json",
  "compilerOptions": {
    "noEmitHelpers": true
  },
  "files": [
     "basic/main.ts"
  ]
}

我编译如下

$> tsc -p ./tsconfig-basic.json

现在我有2个问题

1)找不到文件basic/main.ts,它在./basic/main.ts中却在./src/basic/main.ts中查找。为什么不baseUrl开头?

2)如果固定了(1),则不会将编译后的文件写入./dist。为什么此处未使用基本文件中的"outDir": "./dist?当我将outDir添加到 tsconfig-basic.json 时,它会按预期工作

无论如何,在这里扩展似乎无效,或者工作方式与我预期的不同。有什么建议可以改善我的设置吗?

2 个答案:

答案 0 :(得分:1)

1)baseUrl仅用于与webpack等捆绑程序一起使用。查看有关TypeScript/10866

的讨论


2)不幸的是,这是设计使然。参见问题TypeScript/29172

  

引用Wesley Wigham(Microsoft员工):
  基于路径的编译器选项(outDir,outFile,rootDir,include,文件)从它们所在的配置文件中解决)

您需要为每个outDir文件重复tsconfig.json

答案 1 :(得分:1)

但是有一个窍门。如果您从相关目录中创建到基本Tsconfig文件的符号链接,并扩展符号链接版本而不是原始版本,则所有路径都将根据您的期望进行解析。