diff --git a/packages/kit/src/build.ts b/packages/kit/src/build.ts index c8cb90c3fafa..43444d11f6d7 100644 --- a/packages/kit/src/build.ts +++ b/packages/kit/src/build.ts @@ -136,3 +136,18 @@ export function addVitePlugin (pluginOrGetter: VitePlugin | VitePlugin[] | (() = } }, options) } + +interface AddBuildPluginFactory { + vite?: () => VitePlugin | VitePlugin[] + webpack?: () => WebpackPluginInstance | WebpackPluginInstance[] +} + +export function addBuildPlugin (pluginFactory: AddBuildPluginFactory, options?: ExtendConfigOptions) { + if (pluginFactory.vite) { + addVitePlugin(pluginFactory.vite, options) + } + + if (pluginFactory.webpack) { + addWebpackPlugin(pluginFactory.webpack, options) + } +} diff --git a/test/fixtures/basic/nuxt.config.ts b/test/fixtures/basic/nuxt.config.ts index 12921560fc3c..7e9fdbca0a5a 100644 --- a/test/fixtures/basic/nuxt.config.ts +++ b/test/fixtures/basic/nuxt.config.ts @@ -1,4 +1,4 @@ -import { addComponent, addVitePlugin, addWebpackPlugin } from 'nuxt/kit' +import { addBuildPlugin, addComponent } from 'nuxt/kit' import type { NuxtPage } from 'nuxt/schema' import { createUnplugin } from 'unplugin' import { withoutLeadingSlash } from 'ufo' @@ -104,8 +104,7 @@ export default defineNuxtConfig({ if (id === 'virtual.css') { return ':root { --virtual: red }' } } })) - addVitePlugin(() => plugin.vite()) - addWebpackPlugin(() => plugin.webpack()) + addBuildPlugin(plugin) }, function (_options, nuxt) { const routesToDuplicate = ['/async-parent', '/fixed-keyed-child-parent', '/keyed-child-parent', '/with-layout', '/with-layout2']