web-dev-qa-db-ja.com

tsconfig.jsonファイルを拡張しても何も拡張されないようです

2つの異なる製品を作成する必要があるプロジェクトがあります。私が持っていると言います

./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が使用されないのはなぜですか? tsconfig-basic.jsonoutDirを追加すると、期待どおりに機能します

とにかく、ここでの拡張は機能しないか、期待とは異なる動作をするようです。セットアップを改善する方法はありますか?

3

1)baseUrlは、webpackなどのバンドラーで使用することのみを目的としています。 TypeScript/10866 に関する議論を参照してください


2)これは残念ながら仕様によるものです。問題を参照 TypeScript/29172

ウェズリーウィガム(Microsoft従業員)の言葉:
パスベースのコンパイラオプション(outDir、outFile、rootDir、include、files)は、それらが存在する構成ファイルから解決されます)

tsconfig.jsonファイルごとにoutDirを繰り返す必要があります。

1
a1300

しかし、トリックがあります。関連するディレクトリからベースTsconfigファイルへのシンボリックリンクを作成し、オリジナルではなくシンボリックリンクされたバージョンを拡張すると、すべてのパスが期待どおりに解決されます。

0
Archibald