Skip to content

[Feature]: preserve dynamic import in CJS #121

@Timeless0911

Description

@Timeless0911

What problem does this feature solve?

Input

const { parse } = await import("acorn");

Rslib CJS output

const { parse } = await Promise.resolve(/* import() */ ).then(__webpack_require__.t.bind(__webpack_require__, "acorn", 23));

What expected

const { parse } = await import("acorn");

We should support keep dynamic import in CJS output, thus avoid importing extra runtime code and keeping import existing.

What does the proposed API look like?

esbuild use supported and add an options dynamic-import to control it.

And in Modern.js Module, we deal like below

https://github.com/web-infra-dev/modern.js/blob/f624878a961da8e53a8181d8bf3591fe8c5da8b5/packages/solutions/module-tools/src/builder/esbuild/index.ts#L207-L209

supported: {
	'dynamic-import': buildType === 'bundle' || format !== 'cjs',
},

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions