-
Notifications
You must be signed in to change notification settings - Fork 0
/
rollup.config.js
109 lines (105 loc) · 2.65 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
103
104
105
106
107
108
109
import resolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import postcss from 'rollup-plugin-postcss'
import esbuild from 'rollup-plugin-esbuild'
import { terser } from 'rollup-plugin-terser'
import vue from 'rollup-plugin-vue'
import visualizer from 'rollup-plugin-visualizer';
import cssnano from 'cssnano'
import autoprefixer from 'autoprefixer'
import image from './rollup-plugins/image'
import serve from './rollup-plugins/serve'
import routes from './rollup-plugins/routes'
import replace from './rollup-plugins/replace'
import json from './rollup-plugins/json'
import resourceList from './rollup-plugins/resource-list'
import icons from './rollup-plugins/icons'
import version from './rollup-plugins/version'
import dependencieCheck from './rollup-plugins/dependencieCheck'
import cssAssets from './rollup-plugins/cssAssets'
const isProduction = process.env.NODE_ENV === 'production'
export default {
input: {
main: './src/main.ts',
sw: './src/serviceWorker/serviceWorker.ts'
},
output: {
dir: 'dist',
format: 'es'
},
plugins: [
// only include needed dependencies
dependencieCheck({
throwAtMissing: isProduction
}),
{
transform(code, id) {
if (code.includes('require(\'vue\')') && (id.includes('@vue/comp') || id.includes('@vue\\comp'))) {
return `import Vuefaslkj from 'vue'
${code.replace('require(\'vue\')', 'Vuefaslkj')}
`
}
}
},
// Import Version
version(),
// // Use Workers with comlink
// comlink({
// useModuleWorker: true
// }),
// workers(),
// Import list of all assets
resourceList(),
// Import JSON5 docs
json(),
// Use images
image(),
// Transpile TS
esbuild({
target: 'es2017',
tsconfig: './base-tsconfig.json'
}),
// Transpile vue files
vue({
css: true,
compileTemplate: true,
template: {
preprocessOptions: {
pug: {
doctype: 'html'
}
}
}
}),
// Set Production mode
replace(),
// Use commonJS and Node Modules
commonjs(),
resolve({
jsnext: true,
main: true,
browser: true
}),
// Route import
routes(),
// CSS hanndling
postcss({
to: 'bundle.css',
plugins: [
autoprefixer(),
...(isProduction ? [cssnano()] : [])
],
extract: true
}),
// Assets building
icons(),
// CSS Assets parser and require
cssAssets(),
visualizer({
brotliSize: true,
gzipSize: true
}),
// Minify or Serve
...(isProduction ? [terser()] : [serve()])
]
}