// Entry Point -> Output const webpack = require("webpack"); const CompressionPlugin = require("compression-webpack-plugin"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const path = require("path"); //console.log("node env", process.env.NODE_ENV); //process.env.NODE_ENV = process.env.NODE_ENV || "development" //console.log("node env", process.env.NODE_ENV); module.exports = (env) => { //console.log("env docker", process.env.DOCKER); if (env === "test") { console.log("Loading test env variables"); require("dotenv").config({ path: ".env.test" }); } else if (env === "development") { console.log("Loading development env variables"); require("dotenv").config({ path: ".env.development" }); } else { console.log("Loading production env variables"); require("dotenv").config({ path: ".env.production" }); require("dotenv").config({ path: "docker-variables.env" }); } console.log("env", env); const isProduction = env === "production"; console.log("is prod", isProduction); const CSSExtract = new MiniCssExtractPlugin({ filename: "styles.css" }); return { entry: "./src/app.js", output: { path: path.join(__dirname, "public", "dist"), filename: "bundle.js", }, module: { rules: [ { loader: "babel-loader", test: /\.js$/, exclude: /node_modules/, }, { test: /\.s?css$/, use: [ { loader: MiniCssExtractPlugin.loader, }, { loader: "css-loader", options: { sourceMap: true, }, }, { loader: "sass-loader", options: { implementation: require("dart-sass"), sourceMap: true, }, }, ], }, ], }, plugins: [ CSSExtract, new webpack.DefinePlugin({ "process.env.PORT": JSON.stringify(process.env.PORT), "process.env.REMOTE_URL": JSON.stringify(process.env.REMOTE_URL), "process.env.ENABLE_VIDEO_TRANSCODING": JSON.stringify( process.env.ENABLE_VIDEO_TRANSCODING ), "process.env.DISABLE_STORAGE": JSON.stringify( process.env.DISABLE_STORAGE ), "process.env.COMMERCIAL_MODE": JSON.stringify( process.env.COMMERCIAL_MODE ), }), new CompressionPlugin(), ], devtool: isProduction ? "source-map" : "inline-source-map", devServer: { contentBase: path.join(__dirname, "public"), historyApiFallback: true, publicPath: "/dist/", }, }; };