var webpack = require("webpack"); var path = require("path"); var WebpackPwaManifest = require("webpack-pwa-manifest") var mode = "development"; var BUILD_DIR = path.resolve(__dirname, "build/public/"); if (process.env.NODE_ENV === "production") { mode = "production"; BUILD_DIR = path.resolve(__dirname, "canapeapp/public/"); } var SRC_DIR = path.resolve(__dirname, "frontend/js"); const config = { mode: mode, entry: path.join(SRC_DIR, "app.js"), output: { path: BUILD_DIR, filename: "js/app.js", }, module: { rules: [ { test: /\.jsx?$/, exclude: /node_modules/, use: { loader: "babel-loader", options: { presets: ["@babel/preset-env", "@babel/preset-react"] } } }, { test: /\.less$/, use: [{ loader: "style-loader" // creates style nodes from JS strings }, { loader: "css-loader" // translates CSS into CommonJS }, { loader: "less-loader" // compiles Less to CSS }] }, { test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, use: [{ loader: "url-loader?limit=10000&mimetype=application/font-woff" }] }, { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, use: [{ loader: "file-loader" }] } ] }, plugins: [ new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV) }), new WebpackPwaManifest({ fingerprints: false, inject: false, name: "Canapé", short_name: "Canapé", background_color: "#4e5d6c", theme_color: "#4e5d6c", display: "standalone", orientation: "portrait", scope: "/", start_url: "/", icons: [ { src: path.resolve(__dirname, "frontend/img/android-chrome-192x192.png"), size: "192x192" }, { src: path.resolve(__dirname, "frontend/img/android-chrome-512x512.png"), size: "512x512" } ] }) ], resolve: { extensions: [".js", ".jsx"] }, }; if (process.env.NODE_ENV !== "production") { config.devtool = "#cheap-module-source-map" } module.exports = config;