forked from fullcalendar/fullcalendar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rollup-plugin-multi-entry-array.js
59 lines (51 loc) · 1.45 KB
/
rollup-plugin-multi-entry-array.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// ripped from https://github.com/rollup/rollup-plugin-multi-entry/blob/master/src/index.js
// released under the MIT license: https://opensource.org/licenses/MIT
import { promise as matched } from 'matched' // TODO: add to package.json
const entry = '\0array-entry'
export default function multiEntry(config) {
let include = []
let exclude = []
function configure(config) {
if (typeof config === 'string') {
include = [config]
} else if (Array.isArray(config)) {
include = config
} else {
include = config.include || []
exclude = config.exclude || []
}
}
if (config) {
configure(config)
}
return {
options(options) {
if (options.input && options.input !== entry) {
configure(options.input)
}
options.input = entry
},
resolveId(id) {
if (id === entry) {
return entry
}
},
load(id) {
if (id === entry) {
if (!include.length) {
return Promise.resolve('')
}
const patterns = include.concat(exclude.map(pattern => '!' + pattern))
return matched(patterns, { realpath: true }).then(paths => {
let s =
paths.map((path, index) => `import _m${index} from ${JSON.stringify(path)}`).join(';\n') +
';\n' +
'export default [\n' +
paths.map((path, index) => `_m${index}`).join(', ') + '\n' +
'];\n'
return s
})
}
}
}
}