fix: ABSOLUTE_PATH_REGEXES should also accept forward slashes#20403
Closed
CertainLach wants to merge 1 commit into
Closed
fix: ABSOLUTE_PATH_REGEXES should also accept forward slashes#20403CertainLach wants to merge 1 commit into
CertainLach wants to merge 1 commit into
Conversation
Both forward and inverse slashes are valid on Windows
|
|
alexander-akait
requested changes
Feb 3, 2026
alexander-akait
left a comment
Member
There was a problem hiding this comment.
Please fix lint and add a test case
alexander-akait
added a commit
that referenced
this pull request
Jun 19, 2026
Joining an absolute targetFile onto output.path produced an invalid path on Windows (e.g. C:\out\D:\file) and threw EINVAL. Detect an absolute target file and write it to that location directly. Generalize WINDOWS_ABS_PATH_REGEXP to match every Windows absolute path form including forward slashes (C:/, //), mirroring path.win32.isAbsolute, and reuse it as the single absolute-path check across the codebase: Compiler, util/fs isAbsolute, extractSourceMap, NormalModule (closes the gap also reported in #20403), CleanPlugin and the sharing plugins. Closes #12759
alexander-akait
added a commit
that referenced
this pull request
Jun 19, 2026
Joining an absolute targetFile onto output.path produced an invalid path on Windows (e.g. C:\out\D:\file) and threw EINVAL. Detect an absolute target file and write it to that location directly. Introduce a single cross-platform ABSOLUTE_PATH_REGEXP (POSIX /foo plus every Windows form: drive-letter C:\ and C:/, UNC, rooted), equal to path.posix.isAbsolute || path.win32.isAbsolute, and reuse it as the one absolute-path check across the codebase: Compiler, util/fs isAbsolute, extractSourceMap, NormalModule (also fixes the forward-slash gap from #20403), CleanPlugin and the sharing plugins. Closes #12759
alexander-akait
added a commit
that referenced
this pull request
Jun 19, 2026
Joining an absolute targetFile onto output.path produced an invalid path on Windows (e.g. C:\out\D:\file) and threw EINVAL. Detect an absolute target file and write it to that location directly. Introduce a single cross-platform ABSOLUTE_PATH_REGEXP (POSIX /foo plus every Windows form: drive-letter C:\ and C:/, UNC, rooted), equal to path.posix.isAbsolute || path.win32.isAbsolute, and reuse it as the one absolute-path check across the codebase: Compiler, util/fs isAbsolute, extractSourceMap, NormalModule (also fixes the forward-slash gap from #20403), CleanPlugin and the sharing plugins. Closes #12759
alexander-akait
added a commit
that referenced
this pull request
Jun 19, 2026
Joining an absolute targetFile onto output.path produced an invalid path on Windows (e.g. C:\out\D:\file) and threw EINVAL. Detect an absolute target file and write it to that location directly. Introduce a single cross-platform ABSOLUTE_PATH_REGEXP (POSIX /foo plus every Windows form: drive-letter C:\ and C:/, UNC, rooted), equal to path.posix.isAbsolute || path.win32.isAbsolute, and reuse it as the one absolute-path check across the codebase: Compiler, util/fs isAbsolute, extractSourceMap, NormalModule (also fixes the forward-slash gap from #20403), CleanPlugin and the sharing plugins. Closes #12759
alexander-akait
added a commit
that referenced
this pull request
Jun 19, 2026
Joining an absolute targetFile onto output.path produced an invalid path on Windows (e.g. C:\out\D:\file) and threw EINVAL. Detect an absolute target file and write it to that location directly. Introduce a single cross-platform ABSOLUTE_PATH_REGEXP (POSIX /foo plus every Windows form: drive-letter C:\ and C:/, UNC, rooted), equal to path.posix.isAbsolute || path.win32.isAbsolute, and reuse it as the one absolute-path check across the codebase: Compiler, util/fs isAbsolute, extractSourceMap, NormalModule (also fixes the forward-slash gap from #20403), CleanPlugin and the sharing plugins. Closes #12759
alexander-akait
added a commit
that referenced
this pull request
Jun 19, 2026
Joining an absolute targetFile onto output.path produced an invalid path on Windows (e.g. C:\out\D:\file) and threw EINVAL. Detect an absolute target file and write it to that location directly. Introduce a single cross-platform ABSOLUTE_PATH_REGEXP (POSIX /foo plus every Windows form: drive-letter C:\ and C:/, UNC, rooted), equal to path.posix.isAbsolute || path.win32.isAbsolute, and reuse it as the one absolute-path check across the codebase: Compiler, util/fs isAbsolute, extractSourceMap, NormalModule (also fixes the forward-slash gap from #20403), CleanPlugin and the sharing plugins. Closes #12759
alexander-akait
added a commit
that referenced
this pull request
Jun 20, 2026
* fix: write emitted assets with an absolute path as-is Joining an absolute targetFile onto output.path produced an invalid path on Windows (e.g. C:\out\D:\file) and threw EINVAL. Detect an absolute target file and write it to that location directly. Introduce a single cross-platform ABSOLUTE_PATH_REGEXP (POSIX /foo plus every Windows form: drive-letter C:\ and C:/, UNC, rooted), equal to path.posix.isAbsolute || path.win32.isAbsolute, and reuse it as the one absolute-path check across the codebase: Compiler, util/fs isAbsolute, extractSourceMap, NormalModule (also fixes the forward-slash gap from #20403), CleanPlugin and the sharing plugins. Closes #12759 * fix: allow output.path to be the filesystem root memfs and some platforms throw EISDIR (not EEXIST) when mkdir targets an existing directory such as the root "/", which made output.path "/" fail. Treat EISDIR like EEXIST in mkdirp/mkdirpSync (#10544).
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.
Summary
Latest version of webpack warns when it sees paths like C:/Users/..., despite those paths being valid for windows.
What kind of change does this PR introduce?
Both forward and back slashes are valid on Windows, this patch makes this warning go away, those paths are not affected by the normalization step below.