首页 > 解决方案 > 扩展 tsconfig.json 文件似乎没有扩展任何东西

问题描述

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

./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这里没有使用基础文件?当我将其添加outDirtsconfig-basic.json时,它按预期工作

无论如何,看起来在这里扩展不起作用,或者与我预期的不同。任何建议如何改进我的设置?

标签: typescripttsconfig

解决方案


1)baseUrl仅适用于 webpack 之类的打包工具。请参阅关于TypeScript/10866的讨论


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

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

您将需要为您拥有outDir的每个tsconfig.json文件重复此操作。


推荐阅读