Describe the bug
When the Vite project root is reached through an NTFS junction (directory symlink), vp build fails with:
[plugin vite:build-html]
error: The "fileName" or "name" properties of emitted chunks and assets must be strings
that are neither absolute nor relative paths, received
"../../../../../../../actual/real/path/to/frontend/index.html"
The vite:build-html plugin computes the emitted filename for index.html as a relative path from the output directory to the input file. When the project is accessed through a junction, the output directory resolves to the real path while the input index.html stays on the junction path. Since these appear to be on different directory trees, the relative path traverses up to the drive root and back down, producing a ../../../.. path that rolldown rejects.
Reproduction
-
Create a directory junction on Windows:
# Real project lives at D:\Projects\my-app\frontend
cmd /c mklink /J D:\Shortcut\Projects D:\Projects
-
Run the build from the junction path:
cd D:\Shortcut\Projects\my-app\frontend
vp build
-
The build fails with the error above. Running the same build from the real path (D:\Projects\my-app\frontend) succeeds.
Root cause
Inside the vite:build-html plugin's generateBundle hook, the emitted filename for index.html is computed as a relative path. One side of the calculation uses the resolved/real path and the other uses the junction path. The mismatch produces an invalid relative path.
Expected behavior
vp build should succeed regardless of whether the working directory is reached through a junction or directly. Paths should be consistently resolved (or consistently left unresolved) before computing relative filenames.
System Info
vp v0.1.16
vite v8.0.5
rolldown v1.0.0-rc.13
Node.js v22.22.1
Windows Server 2025 (win32 x64)
pnpm v10.33.0
Used Package Manager
pnpm
Validations
Describe the bug
When the Vite project root is reached through an NTFS junction (directory symlink),
vp buildfails with:The
vite:build-htmlplugin computes the emitted filename forindex.htmlas a relative path from the output directory to the input file. When the project is accessed through a junction, the output directory resolves to the real path while the inputindex.htmlstays on the junction path. Since these appear to be on different directory trees, the relative path traverses up to the drive root and back down, producing a../../../..path that rolldown rejects.Reproduction
Create a directory junction on Windows:
Run the build from the junction path:
The build fails with the error above. Running the same build from the real path (
D:\Projects\my-app\frontend) succeeds.Root cause
Inside the
vite:build-htmlplugin'sgenerateBundlehook, the emitted filename forindex.htmlis computed as a relative path. One side of the calculation uses the resolved/real path and the other uses the junction path. The mismatch produces an invalid relative path.Expected behavior
vp buildshould succeed regardless of whether the working directory is reached through a junction or directly. Paths should be consistently resolved (or consistently left unresolved) before computing relative filenames.System Info
Used Package Manager
pnpm
Validations