-
Notifications
You must be signed in to change notification settings - Fork 1
/
rollup.config.js
81 lines (68 loc) · 2.4 KB
/
rollup.config.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//import { tslint } from 'rollup-plugin-tslint'
import resolve from 'rollup-plugin-node-resolve'
import replace from 'rollup-plugin-replace'
import commonjs from 'rollup-plugin-commonjs'
import typescript from 'rollup-plugin-typescript2'
import { uglify as uglify } from 'rollup-plugin-uglify'
import { terser } from 'rollup-plugin-terser'
import gzip from 'rollup-plugin-gzip'
const configs = []
for (const pkg of ['core', 'hooks', 'html', 'svg', 'util']) {
for (const format of ['umd', 'cjs', 'amd', 'esm']) {
for (const productive of [false, true]) {
configs.push(createConfig(pkg, format, productive))
}
}
}
export default configs
// --- locals -------------------------------------------------------
function createConfig(pkg, moduleFormat, productive) {
return {
input: `src/modules/${pkg}/main/index.ts`,
output: {
file: productive
? `dist/js-widgets.${pkg}.${moduleFormat}.production.js`
: `dist/js-widgets.${pkg}.${moduleFormat}.development.js`,
format: moduleFormat,
sourcemap: false, // productive ? false : 'inline', // TODO
name: pkg === 'core'
? 'jsWidgets'
: `jsWidgets.${pkg}`,
globals: {
'dyo': 'dyo',
'js-spec': 'jsSpec',
'js-widgets': 'jsWidgets',
'js-widgets/util': 'jsWidgets.util',
}
},
external: ['js-spec', 'js-widgets', 'js-widgets/util'],
plugins: [
resolve(),
commonjs(),
// tslint({
//}),
replace({
exclude: 'node_modules/**',
delimiters: ['', ''],
values: {
'process.env.NODE_ENV': productive ? "'production'" : "'development'",
"'../core/main/index'": "'js-widgets'",
"'../../core/main/index'": "'js-widgets'",
"'../../../core/main/index'": "'js-widgets'",
"'../../../../core/main/index'": "'js-widgets'",
"'../../../../../core/main/index'": "'js-widgets'",
"'../util/main/index'": "'js-widgets/util'",
"'../../util/main/index'": "'js-widgets/util'",
"'../../../util/main/index'": "'js-widgets/util'",
"'../../../../util/main/index'": "'js-widgets/util'",
"'../../../../../util/main/index'": "'js-widgets/util'",
}
}),
typescript({
exclude: 'node_modules/**',
}),
productive && (moduleFormat === 'esm' ? terser() : uglify()),
productive && gzip()
],
}
}