From 9c1baeede68ce46417620d8f6a5d0c8c9de3766a Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 15 Aug 2022 16:57:47 -0700 Subject: [PATCH] On windows handle the long paths in realpathSync.native (#50306) Fixes #49470 --- src/compiler/sys.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index e293932b0b463..b0cc058fd93bf 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -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;