import path from 'path' import MonacoWebpackPlugin from 'monaco-editor-webpack-plugin' import { Configuration } from 'webpack' import HtmlWebpackPlugin from 'html-webpack-plugin' import CopyPlugin from 'copy-webpack-plugin' import dotenv from 'dotenv-webpack' const config: Configuration = { entry: path.join(__dirname, 'src', 'index.tsx'), resolve: { extensions: ['.tsx', '.ts', '.js', '.jsx'] }, module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, use: ['babel-loader'] }, { test: /\.(ts|tsx)$/, exclude: /node_modules/, use: [ { loader: 'ts-loader', options: { compilerOptions: { noEmit: false } } } ] }, { test: /\.css$/, exclude: ['/node_modules/', /\.module\.css$/], use: ['style-loader', 'css-loader'] }, { test: /\.module\.css$/i, use: [ 'style-loader', { loader: 'css-loader', options: { modules: { localIdentName: '[local]--[hash:base64:5]' } } } ] }, { test: /\.scss$/, exclude: ['/node_modules/'], use: ['style-loader', 'css-loader', 'sass-loader'] }, { test: /\.(jpg|jpeg|png|gif|mp3|svg)$/, use: ['file-loader'] } ] }, plugins: [ new HtmlWebpackPlugin({ template: path.join(__dirname, 'src', 'index.html') }), new CopyPlugin({ patterns: [{ from: 'public' }] }), new dotenv(), new MonacoWebpackPlugin() ] } export default config