-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Closed
Labels
Design NotesNotes from our design meetingsNotes from our design meetings
Description
Extension Rewriting
- We've discussed what we need to do with async imports.
- One possibility: you do the transform yourself.
- Another: we provide a runtime shim - possibly overridable.
- Also: we have the same situation for
requirecalls in JS input files.- It is currently not as common, but possible, for us to transform JavaScript input files.
- Those files can still refer to
.tsfiles - do we want rewriting for those?
- Does the experimental mode in Node support
require?- Pretty sure it does?
- There's
requirewith a plain string and an arbitrary expression.- Why do we care about this difference?
requirecan be passed into arbitrary places.- Makes us inclined to say no shimming.
- We could error on
requireof an arbitrary expression in this mode.- People can always alias
requireor// @ts-ignore.
- People can always alias
- Extension rewriting was always weird - but if we're gonna do it, maybe we should do it in a maximalist way?
- Feels like if semantics diverges between runtime and emit, that's a problem.
- Could just say only
requireon static imports. - Can you just create arbitrary
requires?- Yes, there's
createRequire- could maybe monkey-patch this? - Also
require.call(...)
- Yes, there's
- Could add an import attribute to turn off rewriting for
import(). - Moved from "don't shim anything" to "shim everything".
- Between import attributes and
(require)(...)these are reasonable opt-outs. - Also open to just a global flag...
- Or a third state for the flag.
"none","staticImportsOnly","bestEffort"?
Metadata
Metadata
Assignees
Labels
Design NotesNotes from our design meetingsNotes from our design meetings