-
Notifications
You must be signed in to change notification settings - Fork 737
[Bug]: Rolldown Case-Insensitive Filename Conflict Reproduction #8273
Description
Reproduction link or steps
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.5Any additional comments?
No response
Metadata
Metadata
Type
Fields
Give feedbackPriority
Effort