react-monaco-editor needed rolling back due to an incompatibility with react 16 monaco-editor then needed rolling back and the editor config, too. Some @types needed to be added, some lint deps needed updating.
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const { writeFileSync } = require('fs');
 | |
| const path = require('path');
 | |
| const CopyWebpackPlugin = require('copy-webpack-plugin');
 | |
| const webpack = require('webpack');
 | |
| 
 | |
| module.exports = (env = {}) => {
 | |
|   const __DEV__ = env.production !== true;
 | |
|   const staticPath = path.join(__dirname, './static/js');
 | |
|   const configPath = path.join(__dirname, '../config/client');
 | |
|   return {
 | |
|     cache: __DEV__ ? { type: 'filesystem' } : false,
 | |
|     mode: __DEV__ ? 'development' : 'production',
 | |
|     entry: {
 | |
|       'frame-runner': './src/client/frame-runner.ts',
 | |
|       'sass-compile': './src/client/workers/sass-compile.ts',
 | |
|       'test-evaluator': './src/client/workers/test-evaluator.ts'
 | |
|     },
 | |
|     devtool: __DEV__ ? 'inline-source-map' : 'source-map',
 | |
|     output: {
 | |
|       publicPath: '/js/',
 | |
|       filename: chunkData => {
 | |
|         // construct and output the filename here, so the client can use the
 | |
|         // json to find the file.
 | |
|         const filename = `${chunkData.chunk.name}.${chunkData.chunk.contentHash.javascript}`;
 | |
|         writeFileSync(
 | |
|           path.join(configPath, `${chunkData.chunk.name}.json`),
 | |
|           `{"filename": "${filename}"}`
 | |
|         );
 | |
|         return filename + '.js';
 | |
|       },
 | |
|       chunkFilename: '[name].[contenthash].js',
 | |
|       path: staticPath
 | |
|     },
 | |
|     stats: {
 | |
|       // Display bailout reasons
 | |
|       optimizationBailout: true
 | |
|     },
 | |
|     module: {
 | |
|       rules: [
 | |
|         {
 | |
|           test: /\.(js|ts)$/,
 | |
|           exclude: /node_modules/,
 | |
|           use: {
 | |
|             loader: 'babel-loader',
 | |
|             options: {
 | |
|               babelrc: false,
 | |
|               presets: [
 | |
|                 [
 | |
|                   '@babel/preset-env',
 | |
|                   { modules: false, targets: '> 0.25%, not dead' }
 | |
|                 ],
 | |
|                 '@babel/preset-typescript'
 | |
|               ],
 | |
|               plugins: [
 | |
|                 '@babel/plugin-transform-runtime',
 | |
|                 '@babel/plugin-syntax-dynamic-import'
 | |
|               ]
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|       ]
 | |
|     },
 | |
|     plugins: [
 | |
|       new CopyWebpackPlugin({
 | |
|         patterns: ['../node_modules/sass.js/dist/sass.sync.js']
 | |
|       }),
 | |
|       new webpack.ProvidePlugin({
 | |
|         process: 'process/browser'
 | |
|       }),
 | |
|       new webpack.ProvidePlugin({
 | |
|         Buffer: ['buffer', 'Buffer']
 | |
|       })
 | |
|     ],
 | |
|     resolve: {
 | |
|       fallback: {
 | |
|         buffer: require.resolve('buffer'),
 | |
|         util: false,
 | |
|         stream: false,
 | |
|         process: require.resolve('process/browser')
 | |
|       },
 | |
|       extensions: ['.js', '.ts']
 | |
|     }
 | |
|   };
 | |
| };
 |