mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
require --compile for ESM bytecode (#26624)
## Summary - Add validation to require `--compile` when using ESM bytecode - Update documentation to clarify ESM bytecode requirements ## Why ESM module resolution is two-phase: (1) analyze imports/exports, (2) evaluate. Without `--compile`, there's no `module_info` embedded, so JSC must still parse the file for module analysis even with bytecode - causing a double-parse deopt. ## Changes - **CLI**: Error when `--bytecode --format=esm` is used without `--compile` - **JS API**: Error when `bytecode: true, format: 'esm'` is used without `compile: true` - **Docs**: Update bytecode.mdx, executables.mdx, index.mdx to clarify requirements - **Types**: Update JSDoc for bytecode option in bun.d.ts ## Test plan ```bash # Should error bun build ./test.js --bytecode --format=esm --outdir=./out # error: ESM bytecode requires --compile. Use --format=cjs for bytecode without --compile. # Should work bun build ./test.js --bytecode --format=esm --compile --outfile=./mytest bun build ./test.js --bytecode --format=cjs --outdir=./out ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -50,7 +50,8 @@ bun build <entry points>
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="--format" type="string" default="esm">
|
||||
Module format of the output bundle. One of <code>esm</code>, <code>cjs</code>, or <code>iife</code>
|
||||
Module format of the output bundle. One of <code>esm</code>, <code>cjs</code>, or <code>iife</code>. Defaults to{" "}
|
||||
<code>cjs</code> when <code>--bytecode</code> is used.
|
||||
</ParamField>
|
||||
|
||||
### File Naming
|
||||
|
||||
Reference in New Issue
Block a user