mirror of
https://github.com/denoland/deno.git
synced 2025-09-27 04:39:10 +00:00
Provide compiled JSON to TypeScript compiler. (#4404)
Fixes #4101 Previously, we would just provide the raw JSON to the TypeScript compiler worker, but TypeScript does not transform JSON. This caused a problem when emitting a bundle, that the JSON would just be "inlined" into the output, instead of being transformed into a module. This fixes this problem by providing the compiled JSON to the TypeScript compiler, so TypeScript just sees JSON as a "normal" TypeScript module.
This commit is contained in:
parent
83f4916195
commit
da8cb408c8
5 changed files with 60 additions and 7 deletions
|
@ -242,8 +242,16 @@ export class Host implements ts.CompilerHost {
|
|||
assert(sourceFile != null);
|
||||
if (!sourceFile.tsSourceFile) {
|
||||
assert(sourceFile.sourceCode != null);
|
||||
// even though we assert the extension for JSON modules to the compiler
|
||||
// is TypeScript, TypeScript internally analyses the filename for its
|
||||
// extension and tries to parse it as JSON instead of TS. We have to
|
||||
// change the filename to the TypeScript file.
|
||||
sourceFile.tsSourceFile = ts.createSourceFile(
|
||||
fileName.startsWith(ASSETS) ? sourceFile.filename : fileName,
|
||||
fileName.startsWith(ASSETS)
|
||||
? sourceFile.filename
|
||||
: fileName.toLowerCase().endsWith(".json")
|
||||
? `${fileName}.ts`
|
||||
: fileName,
|
||||
sourceFile.sourceCode,
|
||||
languageVersion
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue