为什么TypeScript编译器会忽略tsconfig.json?

为什么TypeScript编译器会忽略tsconfig.json?,json,typescript,gulp,asp.net-core,Json,Typescript,Gulp,Asp.net Core,我有一个从教程粘贴的文件(让我们面对它,文档、tut和示例之间的差异是惊人的): /脚本/tsconfig.json: { "compilerOptions": { "emitDecoratorMetadata": true, "experimentalDecorators": true, "module": "commonjs", "noEmitOnError": true, "noImplicitAny"

我有一个从教程粘贴的文件(让我们面对它,文档、tut和示例之间的差异是惊人的):

/脚本/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/”
设置

我真的是一个刚开始吞咽的人,但吞咽任务在我看来还行:

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'));
});
选项设置为保存时编译

保存文件时,它会自动编译单个文件以及在该文件上导入的文件。关闭IDE中的自动编译选项,编译器将考虑TSCONT.JSON文件。

在命令行上指定输入文件时, tsconfig.json文件被忽略。

目录中存在tsconfig.json文件表示该目录是TypeScript项目的根目录。tsconfig.json文件指定编译项目所需的根文件和编译器选项。项目以以下方式之一编译:

使用tsconfig.json

  • 通过在没有输入文件的情况下调用tsc,在这种情况下,编译器将从当前目录开始搜索tsconfig.json文件,并继续搜索父目录链

  • 通过在没有输入文件和--project(或-p)命令行选项的情况下调用tsc,该选项指定包含tsconfig.json文件的目录的路径


  • 什么是
    ts
    ?这是gulp typescript模块吗?保存时编译什么?谢谢你的回答!这让我发疯,直到我记得我最近在我的tsconfig.json中添加了“compileOnSave”:true。我仔细指定了所有这些编译器选项,然后,在一系列未记录和奇怪的行为中,编译器忽略了编译器选项。。。因为我指定了一个输入文件?什么?当您指定要编译的文件时,tsc会忽略您的配置文件,这有什么逻辑原因吗?当你试图通过在单个文件上测试配置的速度来调试配置时,这尤其令人恼火。5年前,配置仍然准确。这应该是公认的答案。