-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
31 lines (25 loc) · 889 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module.exports = (userConfig = {}) => (...nextArguments) => {
const phase = nextArguments[0]
let { plugins = [], ...config } = typeof userConfig === 'function'
? userConfig(...nextArguments)
: userConfig
for (const pluginDefinition of plugins) {
if (
Array.isArray(pluginDefinition.phases) &&
!pluginDefinition.phases.includes(phase)
) {
continue
}
const plugin = typeof pluginDefinition === 'string'
? require(pluginDefinition)
: require(pluginDefinition.resolve)
const pluginOptions = pluginDefinition.options ?? {}
const pluginResult = pluginDefinition.legacy
? plugin({ ...config, ...pluginOptions })
: plugin(config, pluginOptions)
config = typeof pluginResult === 'function'
? { ...config, ...pluginResult(...nextArguments) }
: { ...config, ...pluginResult }
}
return config
}