Skip to content

[Bug]: Rolldown Case-Insensitive Filename Conflict Reproduction #8273

@shengnoyi

Description

@shengnoyi

Reproduction link or steps

https://github.com/shengnoyi/rolldown-case-conflict-repro

What is expected?

When building with chunkFileNames: '[name].js' on macOS (case-insensitive filesystem), Rolldown should detect filename conflicts where files differ only in case (e.g., Edit.js vs edit.js) and automatically resolve them by adding numeric suffixes, similar to how Rollup handles it:

src/Edit.js         → dist/Edit.js
src/lowercase/edit.js → dist/edit2.js   ✅ (automatically renamed to avoid collision)
src/List.js         → dist/List.js
src/lowercase/list.js → dist/list2.js
src/View.js         → dist/View.js
src/lowercase/view.js → dist/view2.js

Expected output: 13 files, all modules preserved.

What is actually happening?

Rolldown does not detect case-only filename conflicts on case-insensitive filesystems. It attempts to write both Edit.js and edit.js as separate files, but on macOS (APFS case-insensitive), they reference the same inode, causing file overwrites:

src/Edit.js         → dist/Edit.js (written first)
src/lowercase/edit.js → dist/edit.js  ❌ (overwrites Edit.js on macOS)
src/List.js         → dist/List.js
src/lowercase/list.js → dist/list.js  ❌ (overwrites List.js)
src/View.js         → dist/View.js
src/lowercase/view.js → dist/view.js  ❌ (overwrites View.js)

Actual output: Only 10 files, 3 modules lost. The overwritten files contain content from the wrong source module (e.g., Edit.js contains content from src/lowercase/edit.js instead of src/Edit.js).

System Info

System:
    OS: macOS 15.5
    CPU: (10) arm64 Apple M4
    Memory: 240.08 MB / 16.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 18.20.8 - /Users/xxx/.nvm/versions/node/v18.20.8/bin/node
    Yarn: 1.22.22 - /Users/xxx/.nvm/versions/node/v18.20.8/bin/yarn
    npm: 10.8.2 - /Users/xxx/.nvm/versions/node/v18.20.8/bin/npm
    pnpm: 8.15.9 - /Users/xxx/.nvm/versions/node/v18.20.8/bin/pnpm
  Browsers:
    Chrome: 145.0.7632.45
    Safari: 18.5

Any additional comments?

No response

Metadata

Metadata

Type

Priority

None yet

Effort

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions