-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrollup.config.js
81 lines (77 loc) · 2.09 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 replace from '@rollup/plugin-replace';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import buble from '@rollup/plugin-buble';
import copy from 'rollup-plugin-copy';
import license from 'rollup-plugin-license';
import manifestJson from 'rollup-plugin-manifest-json';
import manifestData from './public/manifest.json';
//import { terser } from 'rollup-plugin-terser';
const isChrome = process.env.TARGET_BROWSER === 'chrome';
const outDir = `build/${process.env.TARGET_BROWSER || 'chrome'}`;
//console.log(` isChrome=${isChrome}; outDir=${outDir}`);
const splitPerms = (data) => {
const perms = data["permissions"];
if (!perms) return [undefined, undefined];
const pred = perm => /^(?:http|\*)/.test(perm);
return [
perms.filter(perm => !pred(perm)),
perms.filter(perm => pred(perm))
];
};
const [perms, hostPerms] = splitPerms(isChrome? manifestData : {});
const manifestSpecData = isChrome? {
"manifest_version": 3,
"background": {
"service_worker": manifestData["background"]["scripts"].toString()
},
"browser_action": undefined,
"action": manifestData["browser_action"],
"permissions": perms,
"host_permissions": hostPerms,
"web_accessible_resources": [{
"resources": manifestData["web_accessible_resources"],
"matches": [],
"extension_ids": []
}]
} : {};
export default {
input: {
background: 'src/background.js',
content: 'src/SureVoIP.js'
},
output: {
dir: outDir,
format: 'cjs'
},
plugins: [
replace({
'process.env.CHROME': JSON.stringify(isChrome),
}),
resolve(),
commonjs(),
buble({
transforms: { dangerousForOf: true },
include: [ 'src/*.js' ]
}),
license({
sourcemap: false,
banner: {
content: { file: 'src/license.tpl.txt' }
}
}),
copy({
flatten: false,
targets: [
{
src: [ 'public/**/*', '!public/manifest.json' ],
dest: outDir
}
]
}),
manifestJson({
input: 'public/manifest.json',
manifest: manifestSpecData
})
]
};