1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| 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,
| },
| };
|
|