const webpack = require("webpack");
const merge = require("webpack-merge");
const workboxPlugin = require("workbox-webpack-plugin");
const GitRevisionPlugin = require("git-revision-webpack-plugin");
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");

const common = require("./webpack.common.js");

const gitRevisionPlugin = new GitRevisionPlugin();

const config = merge(common, {
  devtool: "source-map",
  mode: "production",
  plugins: [
    new BundleAnalyzerPlugin({
      analyzerMode: "static",
      reportFilename: "prod-report.html",
      openAnalyzer: false
    }),
    new webpack.DefinePlugin({
      SENTRY_DSN: JSON.stringify(
        "https://12b6be8ef7c44f28ac37ab5ed98fd294@sentry.io/146021"
      ),
      COMMITHASH: JSON.stringify(gitRevisionPlugin.commithash())
    }),
    new workboxPlugin.GenerateSW({
      swDest: "service-worker.js",
      // importWorkboxFrom: "local",
      clientsClaim: true,
      skipWaiting: true,
      // Safari (mobile and desktop) seems to have CORs issues when loading
      // .mp3s from service workers.
      exclude: [/\.mp3/, /\.wsz/]
    })
  ]
});

config.entry.webamp.unshift("./js/googleAnalytics.min.js");

module.exports = config;
