forked from SeregPie/VueWordCloud
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrollup.config.mjs
74 lines (67 loc) · 1.5 KB
/
rollup.config.mjs
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
import {rollup} from 'rollup';
import serve from 'rollup-plugin-serve';
import buble from '@rollup/plugin-buble';
import resolve from '@rollup/plugin-node-resolve';
import terser from '@rollup/plugin-terser';
import pkg from './package.json' assert { type: 'json' };
let stringify = function({
importeePrefix = 'stringify!',
plugins = [],
} = {}) {
let ids = new Set();
return {
name: 'stringify',
async resolveId(importee, importer) {
if (importee.startsWith(importeePrefix)) {
importee = importee.slice(importeePrefix.length);
let {id} = await this.resolve(importee, importer);
ids.add(id);
return id;
}
return null;
},
async load(id) {
if (ids.has(id)) {
let bundle = await rollup({
input: id,
plugins,
});
let {output} = await bundle.generate({format: 'iife'});
let [{code}] = output;
return `export default ${JSON.stringify(code)}`;
}
return null;
},
};
};
let plugins = [
stringify({
plugins: [
buble(),
terser(),
],
}),
resolve(),
buble({objectAssign: 'Object.assign'}),
terser({mangle: {properties: {regex: /^ǂ/}}}),
];
if (process.env.ROLLUP_WATCH) {
plugins.push(serve({
contentBase: '',
open: true,
}));
}
let globals = {
'vue': 'Vue',
};
export default {
external: Object.keys(Object.assign(pkg.devDependencies, pkg.peerDependencies)),
input: 'src/index.js',
plugins: plugins,
output: {
file: pkg.main,
format: 'umd',
name: 'VueWordCloud',
globals,
},
};