diff --git a/register/try-ts-ext.js b/register/try-ts-ext.js new file mode 100644 index 000000000..e2d59618b --- /dev/null +++ b/register/try-ts-ext.js @@ -0,0 +1,3 @@ +require('../dist').register({ + tryTsExt: true, +}); diff --git a/src/index.ts b/src/index.ts index e9b42eac2..29c845f10 100644 --- a/src/index.ts +++ b/src/index.ts @@ -84,6 +84,7 @@ export interface ProcessEnv { TS_NODE_SKIP_PROJECT?: string; TS_NODE_SKIP_IGNORE?: string; TS_NODE_PREFER_TS_EXTS?: string; + TS_NODE_TRY_TS_EXT?: string; TS_NODE_IGNORE_DIAGNOSTICS?: string; TS_NODE_TRANSPILE_ONLY?: string; TS_NODE_TYPE_CHECK?: string; @@ -280,6 +281,13 @@ export interface RegisterOptions extends CreateOptions { * @default false */ preferTsExts?: boolean; + + /** + * Attempt to resolve the typescript file when the js file cannot be found. + * + * @default false + */ + tryTsExt?: boolean } /** @@ -327,6 +335,7 @@ export const DEFAULTS: RegisterOptions = { skipProject: yn(env.TS_NODE_SKIP_PROJECT), skipIgnore: yn(env.TS_NODE_SKIP_IGNORE), preferTsExts: yn(env.TS_NODE_PREFER_TS_EXTS), + tryTsExt: yn(env.TS_NODE_ESM_COMPAT), ignoreDiagnostics: split(env.TS_NODE_IGNORE_DIAGNOSTICS), transpileOnly: yn(env.TS_NODE_TRANSPILE_ONLY), typeCheck: yn(env.TS_NODE_TYPE_CHECK), @@ -441,7 +450,9 @@ export function register(opts: RegisterOptions = {}): Service { originalJsHandler ); - patchResolveFileName(); + if (service.options.tryTsExt) { + patchResolveFileName(); + } // Require specified modules before start-up. (Module as any)._preloadModules(service.options.require);