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