fix: normalize path case for style matching on case-insensitive systems#15652
Open
slegarraga wants to merge 1 commit intowithastro:mainfrom
Open
fix: normalize path case for style matching on case-insensitive systems#15652slegarraga wants to merge 1 commit intowithastro:mainfrom
slegarraga wants to merge 1 commit intowithastro:mainfrom
Conversation
On Windows, when the working directory path case differs from the actual filesystem path (e.g. `d:\dev` vs `D:\dev`), styles are missing because Astro treats them as different files. This normalizes the resolved root path using `fs.realpathSync` to ensure consistent casing on case-insensitive file systems. Fixes withastro#14013
🦋 Changeset detectedLatest commit: a049a3a The changes in this PR will be included in the next version bump. Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Merging this PR will improve performance by 10.11%
Performance Changes
Comparing Footnotes |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Fixes #14013
On Windows, when the working directory path case differs from the actual filesystem path (e.g.
d:\devvsD:\dev), styles are missing because Astro treats them as different files. The route component paths are computed relative to the root, so if the root has wrong casing, the paths won't match what Vite's module graph uses.Changes
packages/astro/src/core/config/config.ts:resolveRoot()now normalizes the resolved path usingfs.realpathSync()to ensure the path casing matches the actual filesystem. Falls back to the original resolved path ifrealpathSyncfails.packages/astro/test/units/config/config-resolve.test.js: Added unit tests forresolveRoot()verifying it returns the real filesystem path.Testing
The fix ensures that
resolveRoot()returns the canonical filesystem path regardless of how the user typed the directory name. This is transparent on case-sensitive systems (Linux/macOS) and fixes the style mismatch on case-insensitive systems (Windows).