You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.2 KiB
77 lines
2.2 KiB
3 years ago
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
||
|
/* eslint-disable import/no-extraneous-dependencies */
|
||
|
/**
|
||
|
* @private
|
||
|
* @fileoverview
|
||
|
* This script runs process, which bundles all globals like React or ReactDOM
|
||
|
* to the `global-bundle.js`.
|
||
|
*/
|
||
|
|
||
|
const { rollup } = require('rollup')
|
||
|
const { nodeResolve: resolve } = require('@rollup/plugin-node-resolve')
|
||
|
const commonjs = require('@rollup/plugin-commonjs')
|
||
|
const replace = require('@rollup/plugin-replace')
|
||
|
const json = require('@rollup/plugin-json')
|
||
|
const builtins = require('rollup-plugin-node-builtins')
|
||
|
const globals = require('rollup-plugin-node-globals')
|
||
|
const { terser } = require('rollup-plugin-terser')
|
||
|
|
||
|
const env = require('../src/backend/bundler/bundler-env')
|
||
|
|
||
|
const run = async () => {
|
||
|
const inputOptions = {
|
||
|
input: `${__dirname}/../src/frontend/global-entry.js`,
|
||
|
plugins: [
|
||
|
resolve({
|
||
|
extensions: ['.mjs', '.js', '.jsx', '.json', '.scss'],
|
||
|
mainFields: ['browser'],
|
||
|
preferBuiltins: false,
|
||
|
browser: true,
|
||
|
}),
|
||
|
replace({
|
||
|
'process.env.NODE_ENV': JSON.stringify(env),
|
||
|
'process.env.IS_BROWSER': 'true',
|
||
|
'process.stderr.fd': 'false',
|
||
|
preventAssignment: true,
|
||
|
'process.browser': true,
|
||
|
}),
|
||
|
json(),
|
||
|
commonjs({
|
||
|
include: ['node_modules/**', env === 'development' ? '../../node_modules/**' : ''],
|
||
|
ignoreGlobal: true,
|
||
|
}),
|
||
|
globals(),
|
||
|
builtins(),
|
||
|
...(env === 'production' ? [terser()] : []),
|
||
|
],
|
||
|
}
|
||
|
const bundle = await rollup(inputOptions)
|
||
|
|
||
|
return bundle.write({
|
||
|
format: 'iife',
|
||
|
name: 'globals',
|
||
|
globals: {
|
||
|
react: 'React',
|
||
|
redux: 'Redux',
|
||
|
axios: 'axios',
|
||
|
punycode: 'punycode',
|
||
|
uuid: 'uuid',
|
||
|
'styled-components': 'styled',
|
||
|
'react-dom': 'ReactDOM',
|
||
|
'prop-types': 'PropTypes',
|
||
|
'react-redux': 'ReactRedux',
|
||
|
'react-router': 'ReactRouter',
|
||
|
'react-router-dom': 'ReactRouterDOM',
|
||
|
},
|
||
|
file: `${__dirname}/../src/frontend/assets/scripts/global-bundle.${env}.js`,
|
||
|
})
|
||
|
}
|
||
|
|
||
|
run().catch((error) => {
|
||
|
// eslint-disable-next-line no-console
|
||
|
console.log(error)
|
||
|
process.exit(1)
|
||
|
}).finally(() => {
|
||
|
process.exit()
|
||
|
})
|