const path = require('path'); // Plugins const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const HtmlWebpackPlugin = require('html-webpack-plugin'); const WebpackCleanupPlugin = require('webpack-cleanup-plugin'); const env = process.env; module.exports = { mode: `${env.NODE_ENV ? env.NODE_ENV : 'production'}`, entry: './src/index.tsx', devtool: 'inline-source-map', output: { path: path.join(__dirname, 'dist') }, resolve: { extensions: [".ts", ".tsx", ".js", ".jsx"] }, module: { rules: [{ test: /\.s(a|c)ss$/, use: [ MiniCssExtractPlugin.loader, { loader: "css-loader", options: {} }, { loader: "resolve-url-loader", options: {} }, { loader: "sass-loader", options: { sourceMap: true, sourceMapContents: false } } ] },{ test: /\.(woff(2)?|ttf|eot|svg|png)(\?v=\d+\.\d+\.\d+)?$/, use: [{ loader: 'file-loader', options: { name: '[name].[ext]', outputPath: '/resources/' } }] },{ test: /\.(t|j)sx?$/, exclude: /node_modules/, loaders: ['ts-loader'] }] }, plugins: [ new MiniCssExtractPlugin({ filename: "css/[name].css", chunkFilename: "css/[id].css" }), new HtmlWebpackPlugin({ template: './src/index.html', inject: false, favicon: "./src/resources/favicon.png" }), new WebpackCleanupPlugin({ exclude: ['resources/logo.svg'] }) ] }