-
Notifications
You must be signed in to change notification settings - Fork 30
/
rollup.config.js
81 lines (76 loc) · 1.67 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 resolve from '@rollup/plugin-node-resolve'
import { default as swc } from '@rollup/plugin-swc'
import terser from '@rollup/plugin-terser'
import { readFileSync } from 'fs'
import cleanup from 'rollup-plugin-cleanup'
const { author, homepage, license, main, module, name, version } = JSON.parse(readFileSync('./package.json'))
const banner = `/*!
* ${name} v${version}
* ${homepage}
* (c) ${new Date(process.env.SOURCE_DATE_EPOCH ? process.env.SOURCE_DATE_EPOCH * 1000 : new Date().getTime()).getFullYear()} ${author}
* Released under the ${license} license
*/`
const input = 'src/index.ts'
const inputESM = 'src/index.esm.ts'
const external = ['chart.js', 'chart.js/helpers']
const globals = {
'chart.js': 'Chart',
'chart.js/helpers': 'Chart.helpers',
}
const plugins = (minify) => [
resolve({ extensions: ['.ts', '.mjs', '.js', '.json'] }),
swc({
jsc: {
parser: {
syntax: 'typescript',
},
target: 'es2022',
},
module: {
type: 'es6',
},
sourceMaps: true,
}),
minify
? terser({
output: { preamble: banner },
})
: cleanup({ comments: ['some', /__PURE__/] }),
]
export default [
{
input,
output: {
file: main,
banner,
format: 'umd',
indent: false,
globals,
},
plugins: plugins(),
external,
},
{
input,
output: {
file: main.replace('.js', '.min.js'),
format: 'umd',
indent: false,
globals,
},
plugins: plugins(true),
external,
},
{
input: inputESM,
output: {
file: module,
banner,
format: 'esm',
indent: false,
globals,
},
plugins: plugins(),
external,
},
]