diff --git a/src/compiler/tsbuildPublic.ts b/src/compiler/tsbuildPublic.ts index 1c218ed485d..dcaf895f2e1 100644 --- a/src/compiler/tsbuildPublic.ts +++ b/src/compiler/tsbuildPublic.ts @@ -83,6 +83,7 @@ import { isSolutionConfig, loadWithModeAwareCache, maybeBind, + memoize, missingFileModifiedTime, ModuleResolutionCache, mutateMap, @@ -1758,12 +1759,13 @@ function getUpToDateStatusWorker(state: SolutionBuilde if (extendedConfigStatus) return extendedConfigStatus; // Check package file time + const getBuildInfoDirectory = memoize(() => getDirectoryPath(getNormalizedAbsolutePath(buildInfoPath, host.getCurrentDirectory()))); const packageJsonStatus = forEach( (buildInfo as IncrementalBuildInfo | NonIncrementalBuildInfo).packageJsons, packageJson => checkConfigFileUpToDateStatus( state, - getNormalizedAbsolutePath(packageJson, getDirectoryPath(getNormalizedAbsolutePath(buildInfoPath, host.getCurrentDirectory()))), + getNormalizedAbsolutePath(packageJson, getBuildInfoDirectory()), oldestOutputFileTime, oldestOutputFileName, ), @@ -2195,12 +2197,13 @@ function watchPackageJsonFiles(state: SolutionBuilderS if (!state.watch) return; const buildInfoPath = getTsBuildInfoEmitOutputFilePath(parsed.options)!; const buildInfoCacheEntry = getBuildInfoCacheEntry(state, buildInfoPath, resolvedPath); + const getBuildInfoDirectory = memoize(() => getDirectoryPath(getNormalizedAbsolutePath(buildInfoPath, state.host.getCurrentDirectory()))); mutateMap( getOrCreateValueMapFromConfigFileMap(state.allWatchedPackageJsonFiles, resolvedPath), new Set( buildInfoCacheEntry?.buildInfo ? (buildInfoCacheEntry.buildInfo as IncrementalBuildInfo | NonIncrementalBuildInfo).packageJsons?.map( - f => getNormalizedAbsolutePath(f, getDirectoryPath(getNormalizedAbsolutePath(buildInfoPath, state.host.getCurrentDirectory()))), + f => getNormalizedAbsolutePath(f, getBuildInfoDirectory()), ) : undefined, ),