Skip to content

Published types hard-import from rollup despite rollup being declared as an optional peer dependency #219

Description

@birkskyum

package.json declares rollup and rolldown as optional peer deps, but dist/plugin/index.d.ts hard-imports Plugin and OutputOptions from "rollup" (and dist/plugin/{sourcemap,data}.d.ts do the same with OutputChunk and GetModuleInfo). In a rolldown-only project this forces TypeScript to fail.

The runtime is fine (rolldown is API-compatible). It's purely a type-resolution failure that forces consumers to install rollup (~1 MB plus a multi-MB native binary) just to satisfy TypeScript.

Reproduction

npm i -D rolldown rollup-plugin-visualizer
// rolldown.config.ts
import {defineConfig} from 'rolldown';
import {visualizer} from 'rollup-plugin-visualizer';
export default defineConfig({
  input: 'src/index.ts',
  output: {dir: 'dist'},
  plugins: [visualizer()],
});
$ tsc --noEmit
node_modules/rollup-plugin-visualizer/dist/plugin/index.d.ts(1,39):
  error TS2307: Cannot find module 'rollup' or its corresponding type declarations.

Environment

  • rollup-plugin-visualizer 7.0.1
  • TypeScript 6.0.3 (also reproduces on stock 5.x)
  • rolldown 1.0.0-rc.18

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions