web-dev-qa-db-ja.com

TypeScriptコンパイラがtsconfig.jsonを無視するのはなぜですか?

私はこのファイルをチュートリアルから貼り付けました(そしてそれに直面しましょう、ドキュメント、tuts、および例の間の格差は驚くべきものです):

/scripts/tsconfig.json:

{
    "compilerOptions": {
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "module": "commonjs",
        "noEmitOnError": true,
        "noImplicitAny": false,
        "outDir": "../wwwroot/appScripts/",
        "removeComments": false,
        "sourceMap": true,
        "target": "es5",
        "moduleResolution": "node"
    },
    "exclude": [
        "node_modules",
        "typings/index",
        "typings/index.d.ts"
    ]
}

オプションは保存時にコンパイルするように設定されていますが、TypeScriptファイルを保存すると、JavaScript出力はソースファイルの「下」または「添付」になります。

TypeScript
|
--test.ts 
    |
    --test.js

、それは物理的にソースと同じディレクトリ/TypeScriptにあります。 tsconfig.jsonが欠落している場合、コンパイラーは文句を言いますが、それが存在する場合、そしてそれが間違いなく存在する場合、コンパイラーは"outDir": "../wwwroot/appScripts/"設定を無視します。

私はGulpを初めて使用しますが、Gulpタスクは私には問題ないように見えます。

var tsProject = ts.createProject('scripts/tsconfig.json');
gulp.task('ts', function (done) {
    //var tsResult = tsProject.src()
    var tsResult = gulp.src([
            "scripts/*.ts"
    ])
        .pipe(ts(tsProject), undefined, ts.reporter.fullReporter());
    return tsResult.js.pipe(gulp.dest('./wwwroot/appScripts'));
});
13
ProfK

オプションは保存時にコンパイルするように設定されています

ファイルを保存すると、その単一のファイルとそのファイルにインポートされたファイルが自動的にコンパイルされます。 IDEから自動コンパイルオプションをオフにして、コンパイラがtsconfig.jsonファイルを検討するようにします。

コマンドラインで入力ファイルを指定した場合、tsconfig.jsonファイルは無視されます。

ディレクトリにtsconfig.jsonファイルが存在する場合は、そのディレクトリがTypeScriptプロジェクトのルートであることを示しています。 tsconfig.jsonファイルは、プロジェクトのコンパイルに必要なルートファイルとコンパイラオプションを指定します。プロジェクトは、次のいずれかの方法でコンパイルされます。

Tsconfig.jsonの使用

  1. 入力ファイルなしでtscを呼び出すことにより、この場合、コンパイラーは、現在のディレクトリーから始まり、親ディレクトリー・チェーンまで続くtsconfig.jsonファイルを検索します。

  2. 入力ファイルなしでtscを呼び出し、tsconfig.jsonファイルを含むディレクトリのパスを指定する--project(または単に-p)コマンドラインオプションを呼び出す。

https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

15
Sk_