-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrollup.config.js
executable file
·55 lines (41 loc) · 1.3 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
import replace from 'rollup-plugin-replace'
import resolve from 'rollup-plugin-node-resolve'
import babel from 'rollup-plugin-babel'
import commonjs from 'rollup-plugin-commonjs'
import { terser } from 'rollup-plugin-terser'
const production = process.env.PROD
const react = process.env.REACT
const globals = react ? {} : {}
// const globals = react ? { react: 'React', 'react-dom': 'ReactDOM' } : {}
const input = 'src/scripts/App.jsx'
const output = {
file: 'build/assets/scripts/bundle.js',
format: 'iife',
globals: { ...globals }
}
const globalsArray = Object.keys(output.globals) || []
const external = globalsArray
const resolveConf = resolve({
mainFields: ['module', 'main'],
extensions: ['.mjs', '.js', '.jsx', '.json'],
preferBuiltins: false, // Default: true
dedupe: ['react', 'react-dom']
// jail: '.src/scripts/', // Modules outside this path will be external
})
const babelConf = babel({
externalHelpers: false
})
const replaceConf = replace({
'process.env.NODE_ENV': JSON.stringify(
production ? 'production' : 'development'
)
})
const pluginsDev = [replaceConf, babelConf, resolveConf, commonjs()]
const plugins = production ? [...pluginsDev, terser()] : pluginsDev
export default {
external,
input,
plugins,
output
}
// cjs jsx invalid token issue => move cjs after babel