feat: webpack hook onPackLoad

This commit is contained in:
Xmader 2020-11-17 12:00:41 -05:00
parent 0b7c423d8e
commit 023f7bf215
No known key found for this signature in database
GPG Key ID: A20B97FB9EB730E4
1 changed files with 15 additions and 5 deletions

View File

@ -53,8 +53,11 @@ export const webpackHook = (moduleId: string, moduleOverrides: { [id: string]: M
export const ALL = '*'
export const webpackGlobalOverride = (() => {
export const [webpackGlobalOverride, onPackLoad] = (() => {
type OnPackLoadFn = (pack: WebpackJson[0]) => any
const moduleOverrides: { [id: string]: Module } = {}
const onPackLoadFns: OnPackLoadFn[] = []
function applyOverride (pack: WebpackJson[0]) {
let entries = Object.entries(moduleOverrides)
@ -92,6 +95,7 @@ export const webpackGlobalOverride = (() => {
hooked = true
hookNative(v, 'push', (_fn) => {
return function (pack) {
onPackLoadFns.forEach(fn => fn(pack))
applyOverride(pack)
return _fn.call(this, pack)
}
@ -100,10 +104,16 @@ export const webpackGlobalOverride = (() => {
},
})
// set overrides
return (moduleId: string, override: Module) => {
moduleOverrides[moduleId] = override
}
return [
// set overrides
(moduleId: string, override: Module) => {
moduleOverrides[moduleId] = override
},
// set onPackLoad listeners
(fn: OnPackLoadFn) => {
onPackLoadFns.push(fn)
},
] as const
})()
export default webpackHook