UNPKG

812 BJavaScriptView Raw
1function toArray(obj) {
2 return typeof obj === 'object' ? Object.keys(obj) : []
3}
4
5class Plugins {
6 constructor(list) {
7 this.list = list
8 this.isEmpty = list.length === 0
9 }
10
11 has(type) {
12 return this.list.some(i => i.name === `@size-limit/${type}`)
13 }
14}
15
16module.exports = function loadPlugins(pkg) {
17 if (!pkg || !pkg.packageJson) return new Plugins([])
18
19 let list = toArray(pkg.packageJson.dependencies)
20 .concat(toArray(pkg.packageJson.devDependencies))
21 .concat(toArray(pkg.packageJson.optionalDependencies))
22 .filter(i => i.startsWith('@size-limit/'))
23 .reduce(
24 (all, i) =>
25 all.concat(
26 require(require.resolve(i, {
27 paths: [process.cwd()]
28 }))
29 ),
30 []
31 )
32
33 return new Plugins(list)
34}
35
36module.exports.Plugins = Plugins