diff --git a/packages/nuxt/src/imports/module.ts b/packages/nuxt/src/imports/module.ts index 29e35589b1..acf7d5f87e 100644 --- a/packages/nuxt/src/imports/module.ts +++ b/packages/nuxt/src/imports/module.ts @@ -1,9 +1,10 @@ import { existsSync } from 'node:fs' -import { addTemplate, addTypeTemplate, addVitePlugin, addWebpackPlugin, defineNuxtModule, isIgnored, logger, resolveAlias, tryResolveModule, updateTemplates, useNuxt } from '@nuxt/kit' +import { addBuildPlugin, addTemplate, addTypeTemplate, defineNuxtModule, isIgnored, logger, resolveAlias, tryResolveModule, updateTemplates, useNuxt } from '@nuxt/kit' import { isAbsolute, join, normalize, relative, resolve } from 'pathe' import type { Import, Unimport } from 'unimport' import { createUnimport, scanDirExports, toExports } from 'unimport' import type { ImportPresetWithDeprecation, ImportsOptions, ResolvedNuxtTemplate } from 'nuxt/schema' +import escapeRE from 'escape-string-regexp' import { lookupNodeModuleSubpath, parseNodeModulePath } from 'mlly' import { isDirectory } from '../utils' @@ -15,7 +16,7 @@ export default defineNuxtModule>({ name: 'imports', configKey: 'imports', }, - defaults: { + defaults: nuxt => ({ autoImport: true, scan: true, presets: defaultPresets, @@ -23,11 +24,13 @@ export default defineNuxtModule>({ imports: [], dirs: [], transform: { - include: [], + include: [ + new RegExp('^' + escapeRE(nuxt.options.buildDir)), + ], exclude: undefined, }, virtualImports: ['#imports'], - }, + }), async setup (options, nuxt) { // TODO: fix sharing of defaults between invocations of modules const presets = JSON.parse(JSON.stringify(options.presets)) as ImportPresetWithDeprecation[] @@ -92,8 +95,7 @@ export default defineNuxtModule>({ nuxt.options.alias['#imports'] = join(nuxt.options.buildDir, 'imports') // Transform to inject imports in production mode - addVitePlugin(() => TransformPlugin.vite({ ctx, options, sourcemap: !!nuxt.options.sourcemap.server || !!nuxt.options.sourcemap.client })) - addWebpackPlugin(() => TransformPlugin.webpack({ ctx, options, sourcemap: !!nuxt.options.sourcemap.server || !!nuxt.options.sourcemap.client })) + addBuildPlugin(TransformPlugin({ ctx, options, sourcemap: !!nuxt.options.sourcemap.server || !!nuxt.options.sourcemap.client })) const priorities = nuxt.options._layers.map((layer, i) => [layer.config.srcDir, -i] as const).sort(([a], [b]) => b.length - a.length) diff --git a/packages/nuxt/src/imports/transform.ts b/packages/nuxt/src/imports/transform.ts index 0edeb96e11..a155f18cd0 100644 --- a/packages/nuxt/src/imports/transform.ts +++ b/packages/nuxt/src/imports/transform.ts @@ -8,7 +8,7 @@ import { isJS, isVue } from '../core/utils' const NODE_MODULES_RE = /[\\/]node_modules[\\/]/ const IMPORTS_RE = /(['"])#imports\1/ -export const TransformPlugin = createUnplugin(({ ctx, options, sourcemap }: { ctx: Unimport, options: Partial, sourcemap?: boolean }) => { +export const TransformPlugin = ({ ctx, options, sourcemap }: { ctx: Unimport, options: Partial, sourcemap?: boolean }) => createUnplugin(() => { return { name: 'nuxt:imports-transform', enforce: 'post', diff --git a/packages/nuxt/test/auto-imports.test.ts b/packages/nuxt/test/auto-imports.test.ts index d7b326adf9..58a0203f40 100644 --- a/packages/nuxt/test/auto-imports.test.ts +++ b/packages/nuxt/test/auto-imports.test.ts @@ -22,7 +22,7 @@ describe('imports:transform', () => { imports, }) - const transformPlugin = TransformPlugin.raw({ ctx, options: { transform: { exclude: [/node_modules/] } } }, { framework: 'rollup' }) as Plugin + const transformPlugin = TransformPlugin({ ctx, options: { transform: { exclude: [/node_modules/] } } }).raw({}, { framework: 'rollup' }) as Plugin const transform = async (source: string) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type const result = await (transformPlugin.transform! as Function).call({ error: null, warn: null } as any, source, '')