const ESLintPlugin = require('eslint-webpack-plugin') const TerserPlugin = require('terser-webpack-plugin') module.exports = () => { const node_env = process.env.NODE_ENV ? process.env.NODE_ENV : 'development' const dev = node_env !== 'production' const config = { mode: node_env, devtool: dev ? 'cheap-module-source-map' : false, entry: { 'bridge': [ __dirname + '/index.js' ] }, target: 'node', output: { path: __dirname + '/../public', filename: '[name].js' }, module: { rules: [{ test: /\.js$/, exclude: [ /node_modules/ ], loader: 'babel-loader' }, { test: /\.(png|jpe?g|gif|svg)$/i, type: 'asset/resource' }] }, plugins: [ ], resolve: { symlinks: false, extensions: ['.js'] } } if (dev) { config.plugins.push( new ESLintPlugin({ files: __dirname + '/src', lintDirtyModulesOnly: true, failOnWarning: false, failOnError: true, fix: false })) config.devServer = { hot: true, historyApiFallback: true, client: { overlay: { runtimeErrors: true } } } } config.optimization = { minimize: !dev, minimizer: [ new TerserPlugin({ minify: TerserPlugin.swcMinify, // `terserOptions` options will be passed to `swc` (`@swc/core`) // Link to options - https://swc.rs/docs/config-js-minify terserOptions: {}, }), ] } return config }