diff --git a/packages/docusaurus-utils/src/vcs/vcsGitEager.ts b/packages/docusaurus-utils/src/vcs/vcsGitEager.ts index 8f80f977c5..09cccca2c9 100644 --- a/packages/docusaurus-utils/src/vcs/vcsGitEager.ts +++ b/packages/docusaurus-utils/src/vcs/vcsGitEager.ts @@ -48,25 +48,23 @@ async function loadAllGitFilesInfoMap(cwd: string): Promise { return mergeFileMaps(allMaps); } -function createVcsUninitializedPromise(): Promise { - const promise = Promise.reject( - new Error('Docusaurus Git Eager VCS strategy has not been initialized yet'), - ); - promise.catch(() => {}); // Avoid unhandled promise rejection error + app exit - return promise; -} - function createGitVcsConfig(): VcsConfig { - let filesMapPromise: Promise = - createVcsUninitializedPromise(); + let filesMapPromise: Promise | null = null; async function getGitFileInfo(filePath: string): Promise { const filesMap = await filesMapPromise; - return filesMap.get(filePath) ?? null; + return filesMap?.get(filePath) ?? null; } return { initialize: ({siteDir}) => { + if (filesMapPromise) { + // Already initialized + // For i18n sites, we only initialize once for all locales + // We'll see if this cause troubles... + return; + } + filesMapPromise = PerfLogger.async('Git Eager VCS init', () => loadAllGitFilesInfoMap(siteDir), );