Skip to content

modules imported statically and dynamically is not inlined #454

@susnux

Description

@susnux

Describe the bug

If you import the same module synchronously and async, e.g. a vue component used in your app but also used with defineAsyncComponent, then its bundled into one file 'output.js'.
But at the same time a new chunk is created which imports that component from 'output.js' and is injected back in output.js.

Meaning vite creates useless chunks, as all of them are already bundled in the main entry point, there is no need for this imports.
All imports should be just re-written to Promise.resolve(TheObject).

Reproduction

https://stackblitz.com/edit/vitejs-rolldown-vite-wekrxe1f?file=src%2Fmain.js

Steps to reproduce

run npm build

See that a useless chunk is generated just for the sake of re-import in a cyclic way.

System Info

System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 20.19.1 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 10.8.2 - /usr/local/bin/npm
    pnpm: 8.15.6 - /usr/local/bin/pnpm
  npmPackages:
    rolldown-vite:  7.1.17

Used Package Manager

npm

Logs

No response

Validations

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug: upstreamBug in a dependency of Vite

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions