UNPKG

@roots/bud-extensions

Version:

bud.js core module

55 lines (48 loc) 1.39 kB
import type {Bud} from '@roots/bud-framework' import {DynamicOption, Extension} from '@roots/bud-framework/extension' import { bind, disabled, label, options, } from '@roots/bud-framework/extension/decorators' import { default as InterpolateHtmlWebpackPlugin, type Options, } from './plugin/index.js' /** * Interpolate html webpack plugin configuration */ @label(`@roots/bud-extensions/interpolate-html-webpack-plugin`) @options<Options>({ APP_TITLE: DynamicOption.make(app => app.label), NO_SCRIPT: `You need to enable JavaScript to run this app`, }) @disabled class BudInterpolateHtmlExtension extends Extension< Options, InterpolateHtmlWebpackPlugin > { /** * {@link Extension.make} */ @bind public override async make(bud: Bud, options: Options) { const InterpolateHtmlWebpackPlugin = await bud.module.import( `@roots/bud-extensions/interpolate-html-webpack-plugin/plugin`, import.meta.url, ) const {getHooks} = await bud.module.import( `@roots/bud-support/html-webpack-plugin`, import.meta.url, ) return new InterpolateHtmlWebpackPlugin(getHooks, { ...(options ?? {}), ...(bud.extensions.get(`@roots/bud-extensions/webpack-define-plugin`) ?.options ?? {}), ...(bud.env.getPublicEnv() ?? {}), }) } } export type {Options} export {BudInterpolateHtmlExtension as default}