const CopyWebpackPlugin = require("copy-webpack-plugin"); const HtmlWebpackPlugin = require('html-webpack-plugin'); const miniCssExtractPlugin = require('mini-css-extract-plugin'); const path = require('path'); module.exports = { entry: "./src/js/main.js", output: { path: path.resolve(__dirname, "dist"), filename: "main.js", }, devServer: { static: path.resolve(__dirname, 'dist'), port: 8080, hot: true }, mode: "development", devtool: "eval-source-map", plugins: [ new CopyWebpackPlugin({ patterns: ['img/*.png', 'img/*/*.png'] }), new HtmlWebpackPlugin({ template: './src/index.html' }), new miniCssExtractPlugin() ], module: { rules: [ { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/, }, { test: /\.(jpg|png|svg|gif)$/, type: 'asset/resource', }, { test: /\.(scss)$/, use: [{ // inject CSS to page loader: miniCssExtractPlugin.loader }, { // translates CSS into CommonJS modules loader: 'css-loader' }, { // Run postcss actions loader: 'postcss-loader', options: { // `postcssOptions` is needed for postcss 8.x; // if you use postcss 7.x skip the key postcssOptions: { // postcss plugins, can be exported to postcss.config.js plugins: function () { return [ require('autoprefixer') ]; } } } }, { // compiles Sass to CSS loader: 'sass-loader' }], // parser: { // javascript : { importMeta: false } // } },], }, resolve: { extensions: ['.tsx', '.ts', '.js'], fallback: { "crypto": require.resolve("crypto-browserify"), "buffer": require.resolve("buffer"), "stream": require.resolve("stream-browserify"), "vm": require.resolve("vm-browserify"), }, }, experiments: { asyncWebAssembly: true, syncWebAssembly: true, }, // output: { // filename: 'bundle.js', // path: path.resolve(__dirname, 'dist'), // }, };