From 0d7883935d3b369eb25f88f83c6200169213cfa8 Mon Sep 17 00:00:00 2001 From: Kelly Mears Date: Tue, 22 Mar 2022 06:44:09 -0700 Subject: [PATCH] improve: bud.config (#1287) --- .../bud-api/src/api/methods/config/index.ts | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/sources/@roots/bud-api/src/api/methods/config/index.ts b/sources/@roots/bud-api/src/api/methods/config/index.ts index db9eaeb4ec..dbb3c8f87b 100644 --- a/sources/@roots/bud-api/src/api/methods/config/index.ts +++ b/sources/@roots/bud-api/src/api/methods/config/index.ts @@ -1,24 +1,32 @@ import type {Framework} from '@roots/bud-framework' -import Webpack from 'webpack' +import {lodash} from '@roots/bud-support' +import {Configuration} from 'webpack' + +const {isFunction} = lodash + +export interface override { + (config: Partial): Partial +} export interface config { - (overrides: Partial): Framework + (input: override | Partial): Framework } -export function config( - overrides: ( - config: Partial, - ) => Partial, -): Framework { +export const config: config = function (input): Framework { const ctx = this as Framework - if (!overrides) + if (!input) throw new Error( - 'config overrides must pass a callback function that returns a webpack configuration', + 'config input must pass a callback function that returns a webpack configuration', ) ctx.hooks.action('event.build.after', async app => { - app.build.config = overrides(app.build.config) + app.build.config = isFunction(input) + ? input(app.build.config) + : { + ...app.build.config, + ...input, + } }) return ctx