Cherry-pick PR #50306 into release-4.8 (#50324)

Component commits:
b73d93bf2a On windows handle the long paths in realpathSync.native Fixes #49470

Co-authored-by: Sheetal Nandi <shkamat@microsoft.com>
This commit is contained in:
TypeScript Bot
2022-08-16 12:09:47 -07:00
committed by GitHub
parent 745f958edb
commit ccfc09d82c
+6 -2
View File
@@ -1440,7 +1440,7 @@ namespace ts {
const platform: string = _os.platform();
const useCaseSensitiveFileNames = isFileSystemCaseSensitive();
const realpathSync = _fs.realpathSync.native ?? _fs.realpathSync;
const fsRealpath = !!_fs.realpathSync.native ? process.platform === "win32" ? fsRealPathHandlingLongPath : _fs.realpathSync.native : _fs.realpathSync;
const fsSupportsRecursiveFsWatch = isNode4OrLater && (process.platform === "win32" || process.platform === "darwin");
const getCurrentDirectory = memoize(() => process.cwd());
@@ -1889,9 +1889,13 @@ namespace ts {
return getAccessibleFileSystemEntries(path).directories.slice();
}
function fsRealPathHandlingLongPath(path: string): string {
return path.length < 260 ? _fs.realpathSync.native(path) : _fs.realpathSync(path);
}
function realpath(path: string): string {
try {
return realpathSync(path);
return fsRealpath(path);
}
catch {
return path;