Skip to content

preserveModulesRoot is no longer working on Windows on newest Vite #22534

@rafw87

Description

@rafw87

Describe the bug

After migrating to newest Vite (Rolldown based), following config works improperly on Windows:

import { defineConfig } from 'vite';

export default defineConfig({
  build: {
    ssr: true,
    ssrEmitAssets: true,
    rollupOptions: {
      input: ['src/bin/index.ts'],
      output: {
        preserveModules: true,
        preserveModulesRoot: 'src',
      },
    },
  },
});

Source structure:

src/
├─ bin/
│  ├─ index.ts
├─ lib/
│  ├─ helper.ts
assets/
├─ data.json

Output on Windows:

vite v8.0.14 building ssr environment for production...
✓ 4 modules transformed.
computing gzip size...
dist/assets/data.js     0.09 kB │ gzip: 0.09 kB
dist/src/lib/helper.js  0.12 kB │ gzip: 0.12 kB
dist/src/bin/index.js   0.19 kB │ gzip: 0.14 kB

Output on Linux (node:22.13 image):

vite v8.0.14 building ssr environment for production...
✓ 4 modules transformed.
computing gzip size...
dist/assets/data.js  0.09 kB │ gzip: 0.09 kB
dist/lib/helper.js   0.12 kB │ gzip: 0.12 kB
dist/bin/index.js    0.19 kB │ gzip: 0.14 kB

Seems to be similar to previously fixed #6509 but related to Rolldown.

Reproduction

https://stackblitz.com/edit/vitejs-vite-wybkjasr

Steps to reproduce

  1. Work on Windows
  2. Have file structure similar as above (src directory, and something outside of src)
  3. In vite.config.ts, have defined ssr: true, preserveModules: true and preserveModulesRoot: 'src'
  4. Run vite build and check generated output (dist layout)

System Info

System:
    OS: Windows 11 10.0.26200
    CPU: (12) x64 AMD Ryzen 5 PRO 5650U with Radeon Graphics     
    Memory: 7.45 GB / 30.83 GB
  Binaries:
    Node: 22.22.3 - C:\Program Files\nodejs\node.EXE
    npm: 10.9.8 - C:\Program Files\nodejs\npm.CMD
    pnpm: 9.6.0 - C:\Users\rawi\AppData\Local\pnpm\pnpm.EXE
  Browsers:
    Chrome: 148.0.7778.179
    Edge: Chromium (145.0.3800.97)
    Internet Explorer: 11.0.26100.8115
  npmPackages:
    vite: ^8.0.14 => 8.0.14

Used Package Manager

npm

Logs

No response

Validations

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug: upstreamBug in a dependency of Vitep3-minor-bugAn edge case that only affects very specific usage (priority)

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions