const path = require("path"); const copy = require("copy-webpack-plugin"); const extract = require("mini-css-extract-plugin"); const TerserJSPlugin = require('terser-webpack-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const CompressionPlugin = require("compression-webpack-plugin"); const ESLintPlugin = require('eslint-webpack-plugin'); const CockpitPoPlugin = require("./src/lib/cockpit-po-plugin"); const webpack = require("webpack"); const nodedir = path.resolve((process.env.SRCDIR || __dirname), "node_modules"); /* A standard nodejs and webpack pattern */ const production = process.env.NODE_ENV === 'production'; // Non-JS files which are copied verbatim to dist/ const copy_files = [ "./src/index.html", "./src/manifest.json", ]; const plugins = [ new copy({ patterns: copy_files }), new extract({filename: "[name].css"}), new ESLintPlugin({ extensions: ["js", "jsx"] }), new CockpitPoPlugin(), ]; /* Only minimize when in production mode */ if (production) { plugins.unshift(new CompressionPlugin({ test: /\.(js|html|css)$/, deleteOriginalAssets: true })); } module.exports = { mode: production ? 'production' : 'development', resolve: { modules: [ nodedir, path.resolve(__dirname, 'src/lib') ], alias: { 'font-awesome': path.resolve(nodedir, 'font-awesome-sass/assets/stylesheets') }, }, resolveLoader: { modules: [ nodedir, path.resolve(__dirname, 'src/lib') ], }, watchOptions: { ignored: /node_modules/, }, entry: { index: "./src/index.js", }, // cockpit.js gets included via