diff --git a/src/lib/converter/converter.ts b/src/lib/converter/converter.ts index 55ad9581b..53b5d3fd5 100644 --- a/src/lib/converter/converter.ts +++ b/src/lib/converter/converter.ts @@ -1,6 +1,7 @@ import * as ts from "typescript"; import * as _ts from "../ts-internal"; import * as Path from "path"; +import * as _ from "lodash"; import {Application} from "../application"; import {ParameterType} from "../utils/options/declaration"; @@ -424,19 +425,19 @@ export class Converter extends ChildableComponent { this.convertNode(context, sourceFile); }); - + let diagnostics = program.getOptionsDiagnostics(); if (diagnostics.length) return diagnostics; - + diagnostics = program.getSyntacticDiagnostics(); if (diagnostics.length) return diagnostics; - + diagnostics = program.getGlobalDiagnostics(); if (diagnostics.length) return diagnostics; diagnostics = program.getSemanticDiagnostics(); if (diagnostics.length) return diagnostics; - + return []; } diff --git a/src/lib/utils/options/readers/tsconfig.ts b/src/lib/utils/options/readers/tsconfig.ts index ec6349e8b..0c8dbfd71 100644 --- a/src/lib/utils/options/readers/tsconfig.ts +++ b/src/lib/utils/options/readers/tsconfig.ts @@ -36,8 +36,9 @@ export class TSConfigReader extends OptionsComponent if (TSConfigReader.OPTIONS_KEY in event.data) { this.load(event, Path.resolve(event.data[TSConfigReader.OPTIONS_KEY])); } else if (this.application.isCLI) { - var file = Path.resolve('tsconfig.json'); - if (FS.existsSync(file)) { + let file:string = ts.findConfigFile(".", ts.sys.fileExists); + // If file is undefined, we found no file to load. + if (file) { this.load(event, file); } } @@ -56,7 +57,7 @@ export class TSConfigReader extends OptionsComponent return; } - var data = ts.readConfigFile(fileName, (fileName) => ts.sys.readFile(fileName)).config; + let data = ts.readConfigFile(fileName, ts.sys.readFile).config; if (data === undefined) { event.addError('The tsconfig file %s does not contain valid JSON.', fileName); return; @@ -66,20 +67,23 @@ export class TSConfigReader extends OptionsComponent return; } - if ("files" in data && _.isArray(data.files)) { - event.inputFiles = data.files; - } + data = ts.parseJsonConfigFileContent( + data, + ts.sys, + Path.resolve(Path.dirname(fileName)), + {}, + Path.resolve(fileName)); - if ("compilerOptions" in data) { - var ignored = TypeScriptSource.IGNORED; - var compilerOptions = _.clone(data.compilerOptions); - for (var key of ignored) { - delete compilerOptions[key]; - } + event.inputFiles = data.fileNames; - _.merge(event.data, compilerOptions); + const ignored = TypeScriptSource.IGNORED; + let compilerOptions = _.clone(data.raw.compilerOptions); + for (const key of ignored) { + delete compilerOptions[key]; } + _.merge(event.data, compilerOptions); + if ("typedocOptions" in data) { _.merge(event.data, data.typedocOptions); }