@roots/bud-server
Version:
Development server for @roots/bud
31 lines (26 loc) • 707 B
text/typescript
import type {Bud} from '@roots/bud-framework'
/**
* Inject webpack entrypoints with client scripts
*/
export const inject = async (
app: Bud,
injection: Array<(app: Bud) => false | string>,
) => {
app.hooks.on(`build.entry`, (entrypoints = {}) => {
if (!injection) return entrypoints
return Object.entries(entrypoints ?? {}).reduce(
(entrypoints, [name, entry]) => {
name = name ?? `main`
const importArray = [
...(entry?.import ?? `index`),
...injection.map(fn => fn(app)),
].filter(Boolean)
return {
...entrypoints,
[name]: {...(entry ?? {}), import: importArray},
}
},
{},
)
})
}