UNPKG

1.98 kBJavaScriptView Raw
1/* eslint-disable import/no-extraneous-dependencies */
2/**
3 * @private
4 * @fileoverview
5 * This script runs process, which bundles all globals like React or ReactDOM
6 * to the `global-bundle.js`.
7 */
8
9const rollup = require('rollup')
10const resolve = require('rollup-plugin-node-resolve')
11const commonjs = require('rollup-plugin-commonjs')
12const replace = require('rollup-plugin-replace')
13const json = require('rollup-plugin-json')
14const builtins = require('rollup-plugin-node-builtins')
15const globals = require('rollup-plugin-node-globals')
16const { terser } = require('rollup-plugin-terser')
17
18const React = require('react')
19const ReactDOM = require('react-dom')
20
21const run = async () => {
22 const inputOptions = {
23 input: `${__dirname}/../src/frontend/global-entry.js`,
24 plugins: [
25 resolve({
26 extensions: ['.mjs', '.js', '.jsx', '.json'],
27 jsnext: true,
28 }),
29 replace({
30 'process.env.NODE_ENV': JSON.stringify('production'),
31 'process.env.IS_BROWSER': 'true',
32 'process.stderr.fd': 'false',
33 }),
34 json(),
35 commonjs({
36 include: ['node_modules/**'],
37 namedExports: {
38 react: Object.keys(React),
39 'react-dom': Object.keys(ReactDOM),
40 'react-is': ['isValidElementType', 'isContextConsumer', 'isElement', 'ForwardRef'],
41 },
42 ignoreGlobal: true,
43 }),
44 globals(),
45 builtins(),
46 terser(),
47 ],
48 }
49 const bundle = await rollup.rollup(inputOptions)
50
51 return bundle.write({
52 format: 'iife',
53 name: 'globals',
54 globals: {
55 react: 'React',
56 redux: 'Redux',
57 axios: 'axios',
58 recharts: 'Recharts',
59 'styled-components': 'styled',
60 'react-dom': 'ReactDOM',
61 'prop-types': 'PropTypes',
62 'react-redux': 'ReactRedux',
63 'react-router': 'ReactRouter',
64 'react-router-dom': 'ReactRouterDOM',
65 },
66 file: `${__dirname}/../src/frontend/assets/scripts/global-bundle.js`,
67 })
68}
69
70run()