From 2527da37c616dd02c818b8d099f823a8ae063da1 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 2 Jul 2018 14:15:44 -0700 Subject: [PATCH] Handle JSON extension correctly --- src/compiler/tsbuild.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/compiler/tsbuild.ts b/src/compiler/tsbuild.ts index fd677941079..45587447962 100644 --- a/src/compiler/tsbuild.ts +++ b/src/compiler/tsbuild.ts @@ -291,19 +291,20 @@ namespace ts { function getOutputJavaScriptFileName(inputFileName: string, configFile: ParsedCommandLine) { const relativePath = getRelativePathFromDirectory(rootDirOfOptions(configFile.options, configFile.options.configFilePath!), inputFileName, /*ignoreCase*/ true); const outputPath = resolvePath(configFile.options.outDir || getDirectoryPath(configFile.options.configFilePath!), relativePath); - return changeExtension(outputPath, (fileExtensionIs(inputFileName, Extension.Tsx) && configFile.options.jsx === JsxEmit.Preserve) ? Extension.Jsx : Extension.Js); + const newExtension = fileExtensionIs(inputFileName, Extension.Json) ? Extension.Json : + fileExtensionIs(inputFileName, Extension.Tsx) && configFile.options.jsx === JsxEmit.Preserve ? Extension.Jsx : Extension.Js; + return changeExtension(outputPath, newExtension); } - const extensionsWithNoOutput: ReadonlyArray = [Extension.Dts, Extension.Json]; function getOutputFileNames(inputFileName: string, configFile: ParsedCommandLine): ReadonlyArray { // outFile is handled elsewhere; .d.ts files don't generate outputs - if (configFile.options.outFile || configFile.options.out || fileExtensionIsOneOf(inputFileName, extensionsWithNoOutput)) { + if (configFile.options.outFile || configFile.options.out || fileExtensionIs(inputFileName, Extension.Dts)) { return emptyArray; } const outputs: string[] = []; outputs.push(getOutputJavaScriptFileName(inputFileName, configFile)); - if (configFile.options.declaration) { + if (configFile.options.declaration && !fileExtensionIs(inputFileName, Extension.Json)) { const dts = getOutputDeclarationFileName(inputFileName, configFile); outputs.push(dts); if (configFile.options.declarationMap) {