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
						
					
					
				/* 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()
 | 
						|
})
 |