UNPKG

@roots/bud-api

Version:

bud.js core module

37 lines (29 loc) 1 kB
import type {Bud} from '@roots/bud-framework' import type {Configuration} from '@roots/bud-framework/config' import {BudError} from '@roots/bud-support/errors' import isFunction from '@roots/bud-support/isFunction' export type Parameters = [ | ((config: Partial<Configuration>) => Partial<Configuration>) | ((config: Partial<Configuration>) => Promise<Partial<Configuration>>) | Partial<Configuration>, ] export interface config { (...parameters: Parameters): Bud } export const config: config = function (this: Bud, input): Bud { if (!input) throw new BudError( `config input must pass a callback function that returns a webpack configuration`, { docs: new URL(`https://bud.js.org/docs/bud.config`), thrownBy: `bud.config`, }, ) this.hooks.action(`build.after`, async app => { if (!app) return app.build.config = isFunction(input) ? await input(app.build.config) : {...app.build.config, ...input} }) return this }