UNPKG

728 BJavaScriptView Raw
1const
2 extensionJson = require('./extension-json'),
3 Extension = require('./Extension'),
4 merge = require('webpack-merge')
5
6class ExtensionsRunner {
7 constructor () {
8 const list = extensionJson.getList()
9
10 this.hooks = {}
11 this.extensions = Object.keys(list).map(ext => new Extension(ext))
12 }
13
14 async registerExtensions (ctx) {
15 this.hooks = {}
16 for (let ext of this.extensions) {
17 const hooks = await ext.run(ctx)
18 this.hooks = merge(this.hooks, hooks)
19 }
20 }
21
22 async runHook (hookName, fn) {
23 if (this.hooks[hookName] && this.hooks[hookName].length > 0) {
24 for (let hook of this.hooks[hookName]) {
25 await fn(hook)
26 }
27 }
28 }
29}
30
31module.exports = new ExtensionsRunner()