diff --git a/packages/next/src/build/utils.ts b/packages/next/src/build/utils.ts index f3a74a59d170a..03c77b9e0be11 100644 --- a/packages/next/src/build/utils.ts +++ b/packages/next/src/build/utils.ts @@ -35,7 +35,7 @@ import { import getGzipSize from 'next/dist/compiled/gzip-size' import textTable from 'next/dist/compiled/text-table' import path from 'path' -import { promises as fs } from 'fs' +import { promises as fs, existsSync } from 'fs' import { isValidElementType } from 'next/dist/compiled/react-is' import stripAnsi from 'next/dist/compiled/strip-ansi' import browserslist from 'next/dist/compiled/browserslist' @@ -1783,11 +1783,20 @@ export function getPossibleInstrumentationHookFilenames( extensions: string[] ) { const files = [] + const srcDir = path.join(folder, 'src') + + const hasSrcDir = existsSync(srcDir) + for (const extension of extensions) { - files.push( - path.join(folder, `${INSTRUMENTATION_HOOK_FILENAME}.${extension}`), - path.join(folder, `src`, `${INSTRUMENTATION_HOOK_FILENAME}.${extension}`) - ) + if (hasSrcDir) { + files.push( + path.join(folder, `src`, `${INSTRUMENTATION_HOOK_FILENAME}.${extension}`) + ) + } else { + files.push( + path.join(folder, `${INSTRUMENTATION_HOOK_FILENAME}.${extension}`) + ) + } } return files