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