-
Notifications
You must be signed in to change notification settings - Fork 2
/
rollup.config.js
102 lines (94 loc) · 2.83 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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import { terser as pluginTerser } from 'rollup-plugin-terser';
import pluginNodeResolve from '@rollup/plugin-node-resolve';
import pluginCommonjs from '@rollup/plugin-commonjs';
import pluginTypescript from '@rollup/plugin-typescript';
import * as pkg from './package.json';
const env = {
format: process.env.format,
min: process.env.min === 'true',
dev: process.env.mode === 'dev',
};
// the build hangs when these are imported
const pluginServe = env.dev ? require('rollup-plugin-serve') : () => null;
const pluginLivereload = env.dev ? require('rollup-plugin-livereload') : () => null;
const copyright = `// ${pkg.homepage} v${pkg.version} Copyright ${new Date().getFullYear()} ${
pkg.author.name
}`;
const formatExtension = env.format === 'umd' ? '' : `.${env.format}`;
const fullExtension = env.min ? formatExtension + '.min' : formatExtension;
const bundleDeps = env.dev;
const mainConfig = {
input: 'src/index.ts',
output: {
dir: 'dist',
entryFileNames: `${pkg.name}${fullExtension}.js`,
name: pkg.name,
format: process.env.format,
banner: copyright,
sourcemap: true,
globals: bundleDeps
? {}
: {
webcola: 'cola',
'd3-color': 'd3',
'd3-dispatch': 'd3',
'd3-drag': 'd3',
'd3-ease': 'd3',
'd3-interpolate': 'd3',
'd3-path': 'd3',
'd3-selection': 'd3',
'd3-shape': 'd3',
'd3-timer': 'd3',
'd3-transition': 'd3',
'd3-zoom': 'd3',
},
},
plugins: [
...(env.min ? [pluginTerser()] : []),
pluginNodeResolve({ browser: env.format === 'iife' }),
pluginCommonjs(),
pluginTypescript(),
],
external: bundleDeps
? []
: [
'webcola',
'd3-color',
'd3-drag',
'd3-dispatch',
'd3-drag',
'd3-ease',
'd3-interpolate',
'd3-path',
'd3-selection',
'd3-shape',
'd3-timer',
'd3-transition',
'd3-zoom',
],
};
const examplesConfig = {
input: ['examples/example.ts'],
output: {
dir: 'examples/dist',
name: 'examples',
format: 'iife',
globals: {
'..': 'algorithmx',
},
sourcemap: true,
},
plugins: [
pluginTypescript({ tsconfig: 'examples/tsconfig.json' }),
pluginServe({
open: true,
contentBase: ['examples', 'dist'],
port: 8080,
}),
pluginLivereload(),
],
watch: {
clearScreen: false,
},
};
export default env.dev ? [mainConfig, examplesConfig] : mainConfig;