-
-
Notifications
You must be signed in to change notification settings - Fork 368
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] tsconfig.json "extends" field not parsed by transpiler #1283
Comments
Thanks for filing @zacharyliu -- this seems pretty important! Do you feel comfortable filing a PR for this? @orta -- is there any reason (compatibility, peril, …) @zacharyliu's proposed change of using |
Nope, that change should be fine I think 👍🏻 |
Yep, I got it working locally with a patch, so I'll try to clean it up for a PR. @orta Do you happen to know which TypeScript APIs are best to use for this? ts-node uses |
Off-hand, no, I'd follow ts-node - given the amount of traffic they've seen, it should be a reasonable pattern to replicate |
Describe the bug
When using the built-in native TypeScript transpiler, the
extends
field is not supported and only the explicitcompilerOptions
are used. This field is sometimes used in monorepos to extend a shared config, or to extend one of the official "base" templates.To Reproduce
Steps to reproduce the behavior:
0. Install a base config:
npm install @tsconfig/node16
tsconfig.json
extending that config:danger ci
. It will report an error like "cannot use import outside a module", as themodule: "commonjs"
option from the base config does not get inherited correctly.Expected behavior
Danger should support all official methods of configuring tsconfig.json.
Additional context
I believe the bug is because Danger's transpiler directly loads the tsconfig file contents and passes it to
ts.transpileModule
:danger-js/source/runner/runners/utils/transpiler.ts
Lines 128 to 134 in 630f2a4
This can be fixed by using the TypeScript APIs for parsing the config options. For example, in
ts-node
:https://github.com/TypeStrong/ts-node/blob/14323f9d00d5c7051ac09b944c7f423e442145ea/src/configuration.ts#L301-L317
Some of the other functions in this file, like
lookupTSConfig
, can also use the native APIs instead.The text was updated successfully, but these errors were encountered: