You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Always put brotli payload in execArgv, even for non-esm bootstrapping #1831
Right now, if you fork() a ts-node process, the child gets the ts-node bin entrypoint and the same flags passed to ts-node: --project, etc. Yet if you've launched with --esm, then the child receives a pre-packed brotli payload of parsed configuration & bootstrapping information.
Without brotli, child process re-loads tsconfig, re-does all config work
With brotli, some / most of config loading is already done and baked into the brotli payload
Should these 2 codepaths be unified? So that we always put the brotli payload in execArgv?
Once we have fully completed bootstrapping and config parsing, we can re-pack the brotli payload and put it in execArgv.
Pros
prevents subsequent child processes from repeating any of that config work
skip loading certain deps
skip loading TS compiler entirely if using SWC?
children are forced to use the same tsconfig and flags even if they're spawned in a different working directory
probably a good thing for simplicity
opens the door for future work where children talk to the same language service in external process perhaps?
Cons
breaks rare cases where child_processes are expected to re-discover tsconfig
these cases can be accomplished by scrubbing the execArgv / re-spawning ts-node CLI using cross-spawn or similar
Other notes
Will only happen in our bin.ts bootstrapping; not --loader nor register() codepaths, since the latter do not control the node process' startup.
Activity
Fix ESM node processes being unable to fork into other scripts
Fix ESM node processes being unable to fork into other scripts
Fix ESM node processes being unable to fork into other scripts
Fix ESM node processes being unable to fork into other scripts
Consistently perform bootstrap and encode Brotli config for improved …
Consistently perform bootstrap and encode Brotli config for improved …
Consistently perform bootstrap and encode Brotli config for improved …
Consistently perform bootstrap and encode Brotli config for improved …
Consistently perform bootstrap and encode Brotli config for improved …
Consistently perform bootstrap and encode Brotli config for improved …