From 7006064567b39614d8545d578ff1394023511fc0 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sun, 14 May 2023 12:55:26 +0100 Subject: [PATCH] feat(kit): `addBuildPlugin` for builder-agnostic implementation (#20587) --- packages/kit/src/build.ts | 15 +++++++++++++++ test/fixtures/basic/nuxt.config.ts | 5 ++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/build.ts b/packages/kit/src/build.ts index c8cb90c3fa..43444d11f6 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 12921560fc..7e9fdbca0a 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']