Describe the bug
When building a project that imports element-plus, Rolldown's tree-shaking incorrectly removes the import defaults_default from "./defaults.mjs" statement but keeps the code that references defaults_default, causing a ReferenceError: defaults_default is not defined at runtime.
Reproduction
Minimal source pattern that triggers the bug:
Module defaults.mjs:
var defaults_default = makeInstaller([...components]);
export { defaults_default as default };
Module index.mjs (element-plus/es/index.mjs):
import defaults_default from "./defaults.mjs";
const install = defaults_default.install;
const version = defaults_default.version;
var element_plus_default = defaults_default;
export { /* ... many named exports ... */ install, version, element_plus_default as default };
When a consumer imports only a named export (e.g. import { ElNotification } from 'element-plus'), Rolldown tree-shakes the module and produces output like:
// defaults_default is NOT defined/imported anywhere in the output
defaults_default.install, defaults_default.version; // ← ReferenceError!
The import binding and the variable assignment (var element_plus_default = defaults_default) are removed, but the property access expressions (defaults_default.install, defaults_default.version) are retained as dead side-effects.
System Info
Rolldown: 1.1.3 (via Vite 8.0.16)
Node: v22.21.0
OS: Windows 11
Used Package Manager
pnpm
Describe the bug
When building a project that imports
element-plus, Rolldown's tree-shaking incorrectly removes theimport defaults_default from "./defaults.mjs"statement but keeps the code that referencesdefaults_default, causing aReferenceError: defaults_default is not definedat runtime.Reproduction
Minimal source pattern that triggers the bug:
Module
defaults.mjs:Module
index.mjs(element-plus/es/index.mjs):When a consumer imports only a named export (e.g.
import { ElNotification } from 'element-plus'), Rolldown tree-shakes the module and produces output like:The
importbinding and the variable assignment (var element_plus_default = defaults_default) are removed, but the property access expressions (defaults_default.install,defaults_default.version) are retained as dead side-effects.System Info
Used Package Manager
pnpm