-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
63 lines (58 loc) · 1.8 KB
/
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
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
60
61
62
63
import { resolve as resolvePath } from 'path'
import { taskRunner } from '../testRunner'
const PATH_ROOT = resolvePath(__dirname)
const PATH_OUTPUT = resolvePath(__dirname, 'output-gitignore')
const entryMap = {
A: 'source/A1',
B: 'source/B1',
C: 'source/C1',
D: 'source/D1',
E: 'source/E1',
F: 'source/F1'
}
const customOptionList = [ {
chunkName: 'lib-big',
// only for `chunk-A` and `chunk-B`
filterChunk: ({ chunk }) => [ 'A', 'B' ].includes(chunk.name),
// split the module used in both `chunk-A` and `chunk-B`
filterModule: ({ module, moduleChunkList }) => {
let isInChunkA = false
let isInChunkB = false
moduleChunkList.forEach((chunk) => {
isInChunkA |= chunk.name === 'A'
isInChunkB |= chunk.name === 'B'
})
return isInChunkA && isInChunkB
}
}, {
chunkName: 'vendor',
// select all except `chunk-lib-big`
filterChunk: ({ chunk }) => chunk.name !== 'lib-big',
// this module must be used in at least 4 of selected chunks
filterModule: ({ module, moduleChunkList }) => moduleChunkList.length >= 4
}, {
chunkName: 'lib-ui',
// select all except `chunk-lib-big`
filterChunk: ({ chunk }) => chunk.name !== 'lib-big',
// this module must be used in at least 2 of selected chunks
filterModule: ({ module, moduleChunkList }) => moduleChunkList.length >= 2
} ]
const verifyOutputContentMap = {
'A.js': [ 'MARK_A1_DATA' ],
'B.js': [ 'MARK_B1_DATA' ],
'C.js': [ 'MARK_C1_DATA' ],
'D.js': [ 'MARK_D1_DATA' ],
'E.js': [ 'MARK_E1_DATA' ],
'F.js': [ 'MARK_F1_DATA' ],
'lib-big.js': [ 'MARK_VENDOR_DATA', 'MARK_UI_DATA', 'MARK_DATA_DATA' ],
'vendor.js': [ 'MARK_VENDOR_DATA' ],
'lib-ui.js': [ 'MARK_UI_DATA' ]
}
taskRunner({
PATH_ROOT,
PATH_OUTPUT,
entryMap,
customOptionList,
verifyOutputContentMap,
taskName: 'test|custom-lib-big'
})