diff --git a/packages/nuxt/src/core/builder.ts b/packages/nuxt/src/core/builder.ts index 6a7c0c2f6de2..c159438c8710 100644 --- a/packages/nuxt/src/core/builder.ts +++ b/packages/nuxt/src/core/builder.ts @@ -1,5 +1,5 @@ import chokidar from 'chokidar' -import { importModule, isIgnored } from '@nuxt/kit' +import { isIgnored, tryResolveModule } from '@nuxt/kit' import { debounce } from 'perfect-debounce' import { normalize } from 'pathe' import type { Nuxt } from 'nuxt/schema' @@ -62,7 +62,7 @@ function watch (nuxt: Nuxt) { async function bundle (nuxt: Nuxt) { try { const { bundle } = typeof nuxt.options.builder === 'string' - ? await importModule(nuxt.options.builder, { paths: [nuxt.options.rootDir, nuxt.options.workspaceDir, import.meta.url] }) + ? await loadBuilder(nuxt, nuxt.options.builder) : nuxt.options.builder return bundle(nuxt) @@ -78,3 +78,12 @@ async function bundle (nuxt: Nuxt) { throw error } } + +async function loadBuilder (nuxt: Nuxt, builder: string) { + for (const root of [nuxt.options.rootDir, import.meta.url]) { + const builderPath = await tryResolveModule(builder, root) + if (builderPath) { + return import(builderPath) + } + } +}