@@ -291,17 +291,20 @@ namespace ts {
291
291
function getOutputJavaScriptFileName ( inputFileName : string , configFile : ParsedCommandLine ) {
292
292
const relativePath = getRelativePathFromDirectory ( rootDirOfOptions ( configFile . options , configFile . options . configFilePath ! ) , inputFileName , /*ignoreCase*/ true ) ;
293
293
const outputPath = resolvePath ( configFile . options . outDir || getDirectoryPath ( configFile . options . configFilePath ! ) , relativePath ) ;
294
- return changeExtension ( outputPath , ( fileExtensionIs ( inputFileName , Extension . Tsx ) && configFile . options . jsx === JsxEmit . Preserve ) ? Extension . Jsx : Extension . Js ) ;
294
+ const newExtension = fileExtensionIs ( inputFileName , Extension . Json ) ? Extension . Json :
295
+ fileExtensionIs ( inputFileName , Extension . Tsx ) && configFile . options . jsx === JsxEmit . Preserve ? Extension . Jsx : Extension . Js ;
296
+ return changeExtension ( outputPath , newExtension ) ;
295
297
}
296
298
297
299
function getOutputFileNames ( inputFileName : string , configFile : ParsedCommandLine ) : ReadonlyArray < string > {
298
- if ( configFile . options . outFile ) {
300
+ // outFile is handled elsewhere; .d.ts files don't generate outputs
301
+ if ( configFile . options . outFile || configFile . options . out || fileExtensionIs ( inputFileName , Extension . Dts ) ) {
299
302
return emptyArray ;
300
303
}
301
304
302
305
const outputs : string [ ] = [ ] ;
303
306
outputs . push ( getOutputJavaScriptFileName ( inputFileName , configFile ) ) ;
304
- if ( configFile . options . declaration ) {
307
+ if ( configFile . options . declaration && ! fileExtensionIs ( inputFileName , Extension . Json ) ) {
305
308
const dts = getOutputDeclarationFileName ( inputFileName , configFile ) ;
306
309
outputs . push ( dts ) ;
307
310
if ( configFile . options . declarationMap ) {
0 commit comments