Skip to content

[Bug]: preserveModules removes named exports #6010

Description

@pedrodim

Reproduction link or steps

https://repl.rolldown.rs/#eNp9UUFqwzAQ/MqiS5IS7LvB/UEplNKTLmq8bgWyJKR1nGD8964su3FoqPFBo52Z1e6MohXVKLRt8FJQTGcrqhs+ihNDvHgXCJ5ARaDBQRtcB1IUJQNmScE8FBWFHqejCM6Yxg22ODnb6q+N7YNKbqC7uQFdPcIIbwvt1ZN2NsKUG+5W+U5aaZc3Ndiq3hDsR1Bew3So/sjrZxilBQhIfbD5DOB68j1VKwTwASOGM764pjcYK0jjHNdq60KnmL7D2HH/dDXNxUla/qUtS3jXnmX8jGLeXxYC1HUNalCaII+5vw1ymHX5SzoeCoPu0JIy/+jKLS+ZCF57zmJd9YIe5PcdEDcJJrjJsFUmphDX+1+/Fd85co6RoLt+qKDVp0Go2XRwwTT3fmx4ZpVRhJHE9APDLNCp

What is expected?

two.js and three.js should keep their named exports

import { __export } from "./_virtual/rolldown_runtime.js";

//#region three.ts
var three_exports = {};
__export(three_exports, { myVariable: () => myVariable });
const myVariable = "world";

//#endregion
export { myVariable, three_exports };

What is actually happening?

two.js and three.js named exports are removed

import { __export } from "./_virtual/rolldown_runtime.js";

//#region three.ts
var three_exports = {};
__export(three_exports, { myVariable: () => myVariable });
const myVariable = "world";

//#endregion
export { three_exports };

System Info

System:
    OS: macOS 15.5
    CPU: (11) arm64 Apple M3 Pro
    Memory: 81.06 MB / 18.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 22.14.0 - ~/.nvm/versions/node/v22.14.0/bin/node
    Yarn: 1.22.21 - /opt/homebrew/bin/yarn
    npm: 10.9.2 - ~/.nvm/versions/node/v22.14.0/bin/npm
    pnpm: 9.9.0 - ~/Library/pnpm/pnpm
  Browsers:
    Chrome: 139.0.7258.155
    Edge: 139.0.3405.125
    Safari: 18.5
  npmPackages:
    rolldown: 1.0.0-beta.34 => 1.0.0-beta.34

Any additional comments?

If two.ts and three.ts are declared as inputs the exports are keep, but I would expect preserveModules not to remove any export.

Rollup reproduction, named export are preserved: https://bundler.sxzz.dev/#eNptkMFuwyAMhl/F8qXSFGV3pD3CrjtxoY3ZMhEcGVg7Rbx7naZNG7U3vt8/nxETejQT9rGjU5vTfI5o7tzgQZFOI0uGN3AJ8pHBCw9gsX1X0JZF7RGaLIVqg0t4U13phehHiB5UMz7IvAvpYrvmq+/GG+OBY8ow/H856d0+EHyo9MgSOos2bo3CIZSx1Su+/25/V/NTvtnQkXclZJhsBOCSx5LNAgCjUCL5o0/uSqBkYP6JZpl5lsFpdUdp2M1R1UHFqg/Zr0uxngG2+oDb

Metadata

Metadata

Type

Fields

Priority

None yet

Effort

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions