diff --git a/packages/kit/src/build.ts b/packages/kit/src/build.ts index e5678da2e6a7..1ad1ad8b4f76 100644 --- a/packages/kit/src/build.ts +++ b/packages/kit/src/build.ts @@ -27,10 +27,13 @@ export interface ExtendConfigOptions { * @default true */ client?: boolean + /** + * Prepends the plugin to the array with `unshit()` instead of `push()`. + */ + prepend?: boolean } -export interface ExtendWebpackConfigOptions extends ExtendConfigOptions { -} +export interface ExtendWebpackConfigOptions extends ExtendConfigOptions {} export interface ExtendViteConfigOptions extends ExtendConfigOptions {} @@ -104,12 +107,13 @@ export function extendViteConfig ( * Append webpack plugin to the config. */ export function addWebpackPlugin (plugin: WebpackPluginInstance | WebpackPluginInstance[], options?: ExtendWebpackConfigOptions) { + const method: 'push' | 'unshift' = options?.prepend ? 'unshift' : 'push' extendWebpackConfig((config) => { config.plugins = config.plugins || [] if (Array.isArray(plugin)) { - config.plugins.push(...plugin) + config.plugins[method](...plugin) } else { - config.plugins.push(plugin) + config.plugins[method](plugin) } }, options) } @@ -118,12 +122,13 @@ export function addWebpackPlugin (plugin: WebpackPluginInstance | WebpackPluginI * Append Vite plugin to the config. */ export function addVitePlugin (plugin: VitePlugin | VitePlugin[], options?: ExtendViteConfigOptions) { + const method: 'push' | 'unshift' = options?.prepend ? 'unshift' : 'push' extendViteConfig((config) => { config.plugins = config.plugins || [] if (Array.isArray(plugin)) { - config.plugins.push(...plugin) + config.plugins[method](...plugin) } else { - config.plugins.push(plugin) + config.plugins[method](plugin) } }, options) }