-
-
Notifications
You must be signed in to change notification settings - Fork 88
Description
Due to the below if condition, introduced in #694, if options are passed to register programmatically (e.g. register({ ...customOptions })), they will be ignored in favor of either the results from readDefaultTsConfig or options gathered directly by swc from a nearby .swcrc file when process.env.SWCRC = 'true'.
swc-node/packages/register/register.ts
Lines 108 to 110 in ba8f60d
| if (!process.env.SWCRC) { | |
| options = readDefaultTsConfig() | |
| } |
In cases where SWCRC is not true (unset, etc.), the configuration returned from readDefaultTsConfig is taken even if options are passed to register, meaning the passed options are altogether ignored.
I believe in this specific circumstance, the intuition would be for options passed to register to be used && !process.env.SWCRC.
Unless I am totally off-base here, I think the body of the if can be changed to (or something similar):
if (!process.env.SWCRC) {
options = Object.keys(options).length ? options : readDefaultTsConfig()
} Where when process.env.SWCRC is falsy, we prefer any programmatically specified options before trying to read a tsconfig.json file. With this, I think the scenario above should be accounted for appropriately, while also not breaking what was fixed in #694.
For anyone running into this currently, using patch-package with the below diff, I was able to quickly fix this for 1.6.6
diff --git a/node_modules/@swc-node/register/lib/register.js b/node_modules/@swc-node/register/lib/register.js
index 7d4cfd8..1a8eab1 100644
--- a/node_modules/@swc-node/register/lib/register.js
+++ b/node_modules/@swc-node/register/lib/register.js
@@ -88,7 +88,7 @@ function compile(sourcecode, filename, options, async = false) {
exports.compile = compile;
function register(options = {}, hookOpts = {}) {
if (!process.env.SWCRC) {
- options = (0, read_default_tsconfig_1.readDefaultTsConfig)();
+ options = Object.keys(options).length ? options : (0, read_default_tsconfig_1.readDefaultTsConfig)();
}
options.module = ts.ModuleKind.CommonJS;
(0, sourcemap_support_1.installSourceMapSupport)();