import path from 'path'; import { fileURLToPath } from 'url'; import HtmlWebpackPlugin from 'html-webpack-plugin'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const isProduction = process.env.NODE_ENV === 'production'; export default { mode: isProduction ? 'production' : 'development', entry: './src/index.ts', devtool: isProduction ? false : 'inline-source-map', experiments: { topLevelAwait: true, }, module: { rules: [ { test: /\.ts$/, use: 'ts-loader', exclude: /node_modules/, }, { test: /\.css$/i, resourceQuery: { not: [/raw/] }, use: ['style-loader', 'css-loader'], }, { // Import mit ?raw liefert den CSS-Quelltext als String (zum Umschalten // der Theme-Defines zur Laufzeit). resourceQuery: /raw/, type: 'asset/source', }, { test: /\.(woff|woff2|ttf|eot|svg|png|jpg|gif|ico)$/i, type: 'asset', }, ], }, resolve: { extensions: ['.ts', '.js'], }, plugins: [ new HtmlWebpackPlugin({ template: 'src/index.html', }), ], devServer: { host: '0.0.0.0', port: 5000, open: false, proxy: [{ context: ['/api'], target: 'http://localhost:3000' }], }, output: { path: path.resolve(__dirname, 'dist'), filename: 'index.[contenthash].js', clean: true, }, stats: { errorDetails: true, }, };