/
rollup-config.js
96 lines (90 loc) · 2.16 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
const replace = require('rollup-plugin-replace')
const resolve = require('rollup-plugin-node-resolve')
const commonjs = require('rollup-plugin-commonjs')
const json = require('rollup-plugin-json')
const vue = require('rollup-plugin-vue').default
const typescript = require('rollup-plugin-typescript')
const babel = require('rollup-plugin-babel')
const { terser } = require('rollup-plugin-terser')
const {
pkg: { version },
pathSrc,
pathDist,
banner,
} = require('./util')
module.exports = [
{
input: 'vssue.bitbucket.ts',
output: 'vssue.bitbucket.min.js',
format: 'umd',
},
{
input: 'vssue.github.ts',
output: 'vssue.github.min.js',
format: 'umd',
},
{
input: 'vssue.gitlab.ts',
output: 'vssue.gitlab.min.js',
format: 'umd',
},
{
input: 'main.ts',
output: 'vssue.js',
format: 'es',
},
].map(opts => {
const minify = Boolean(/min\.js$/.test(opts.output))
const config = {
input: pathSrc(opts.input),
output: {
file: opts.output,
format: opts.format,
dir: pathDist(),
name: 'Vssue',
banner,
globals: {
'vue': 'Vue',
},
},
external: [
'vue',
...(opts.format === 'es' ? [
'@vssue/utils',
'vue-i18n',
'vue-property-decorator',
] : []),
],
plugins: [
replace({
'process.env.NODE_ENV': JSON.stringify('production'),
'process.env.VUE_APP_VERSION': JSON.stringify(version),
}),
resolve({
browser: true,
preferBuiltins: true,
}),
commonjs(),
json(),
// https://github.com/rollup/rollup-plugin-typescript/issues/135
typescript(Object.assign({},
require('../../../tsconfig.base.json').compilerOptions,
require('../tsconfig.json').compilerOptions
)),
vue(),
...(opts.format !== 'es' ? [babel({
babelrc: false,
presets: ['@vue/app'],
runtimeHelpers: true,
extensions: ['.js', '.vue'],
exclude: [/\/core-js\//, /@babel\/runtime/],
})] : []),
...(minify ? [terser({
output: {
comments: /^!/,
},
})] : []),
],
}
return config
})