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 { entry: './src/index.ts', mode: isProduction ? 'production' : 'development', devtool: isProduction ? false : 'inline-source-map', experiments: { topLevelAwait: true, }, module: { rules: [ { test: /\.ts$/, use: 'ts-loader', exclude: /node_modules\/(?!@dh-software)/, }, { test: /\.css$/i, resourceQuery: { not: [/raw/] }, use: ['style-loader', 'css-loader'], }, { // Import mit ?raw liefert den CSS-Quelltext als String (Theme-Umschaltung). resourceQuery: /raw/, type: 'asset/source', }, { test: /\.(svg|ttf|woff|woff2|png|jpg|gif|ico)$/i, type: 'asset', }, ], }, resolve: { extensions: ['.ts', '.js'], }, plugins: [ new HtmlWebpackPlugin({ template: 'src/index.html', // Das Fenster laedt die Datei direkt vom Dateisystem — relative Pfade. publicPath: '', }), ], output: { path: path.resolve(__dirname, 'dist'), filename: 'index.[contenthash].js', clean: true, }, stats: { errorDetails: true, }, };