const HtmlWebpackPlugin = require('html-webpack-plugin'); const { ModuleFederationPlugin } = require('webpack').container; // const WebpackPwaManifest = require('webpack-pwa-manifest'); const path = require('path'); module.exports = { mode: 'development', entry: './src/App.tsx', output: { filename: 'main.js', path: __dirname + '/dist', publicPath: 'auto', }, resolve: { extensions: ['.tsx', '.ts', '.js', '.jsx'], alias: { "@app": path.resolve("./src"), "@pages": path.resolve(__dirname, "./src/pages"), "@components": path.resolve(__dirname, "./src/components"), "@core": path.resolve(__dirname, "./src/core"), "@layouts": path.resolve(__dirname, "./src/layouts"), }, }, module: { rules: [ { test: /\.(ts|tsx|js|jsx)$/, use: ["babel-loader", "ts-loader"], exclude: /node_modules/, // options: { // presets: ["@babel/preset-react"], // }, }, // { // test: /\.(ts|tsx|js|jsx)$/, // use: 'ts-loader', // exclude: /node_modules/, // }, // css and scss loader { // test: /\.css$/, test: /\.(css|scss)$/, use: ["style-loader", "css-loader"], }, // image loader { test: /\.(png|svg|jpg|jpeg|gif)$/i, type: "asset/resource", }, ], }, plugins: [ new HtmlWebpackPlugin({ template: './index.html', }), // new WebpackPwaManifest({ // filename: "manifest.json", // name: 'positive-intentions', // short_name: 'PI', // description: 'positive-intentions', // "icons": [ // { // src: path.resolve('./public/favicon.ico'), // sizes: [96] // multiple sizes // }, // { // src: path.resolve('./public/logo512.png'), // sizes: [96, 128, 192, 256, 384, 512], // multiple sizes // maskable: true, // } // ], // "start_url": ".", // "display": "standalone", // "theme_color": "#44b700", // "background_color": "#ffffff", // // crossorigin: 'use-credentials', // can be null, use-credentials or anonymous // inject: true, // }), new ModuleFederationPlugin({ name: 'meshtastic', filename: 'remoteEntry.js', exposes: { './meshtastic': './src/App.tsx', }, shared: { react: { singleton: true }, "react-dom": { singleton: true } } }), ], };