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

时间:2016-09-08 19:46:08

标签: json typescript gulp asp.net-core

我有这个文件,粘贴在教程中(让我们面对它,文档,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输出结束于'或#39;附加到'源文件:

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'));
});

1 个答案:

答案 0 :(得分:10)

  

选项设置为在保存

时编译

保存文件时,它会自动编译该文件中导入的单个文件和文件。从IDE关闭自动编译选项,因此编译器将考虑tsconfig.json文件。

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

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

使用tsconfig.json

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

  2. 通过调用没有输入文件的tsc和--project(或只是-p)命令行选项来指定包含tsconfig.json文件的目录的路径。

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