@roots/bud-extensions
Version:
bud.js core module
55 lines (48 loc) • 1.39 kB
text/typescript
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
*/
(`@roots/bud-extensions/interpolate-html-webpack-plugin`)
<Options>({
APP_TITLE: DynamicOption.make(app => app.label),
NO_SCRIPT: `You need to enable JavaScript to run this app`,
})
class BudInterpolateHtmlExtension extends Extension<
Options,
InterpolateHtmlWebpackPlugin
> {
/**
* {@link Extension.make}
*/
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}