webpack.prod.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* global __dirname, module, process */
  2. const common = require("./webpack.common.js");
  3. const merge = require("webpack-merge");
  4. const path = require('path');
  5. const webpack = require('webpack');
  6. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  7. const CopyPlugin = require('copy-webpack-plugin');
  8. const ASSET_PATH = process.env.ASSET_PATH || '/dist/'; // eslint-disable-line no-process-env
  9. module.exports = merge(common, {
  10. output: {
  11. publicPath: ASSET_PATH,
  12. filename: 'converse.min.js',
  13. },
  14. plugins: [
  15. new MiniCssExtractPlugin({filename: '../dist/converse.min.css'}),
  16. new CopyPlugin([{from: 'images/favicon.ico'}]),
  17. new webpack.DefinePlugin({ // This makes it possible for us to safely use env vars on our code
  18. 'process.env.ASSET_PATH': JSON.stringify(ASSET_PATH)
  19. })
  20. ],
  21. mode: "production",
  22. devtool: "source-map",
  23. module: {
  24. rules: [{
  25. test: /\.scss$/,
  26. use: [
  27. MiniCssExtractPlugin.loader,
  28. {
  29. loader: 'css-loader',
  30. options: {sourceMap: true}
  31. },
  32. 'postcss-loader',
  33. {
  34. loader: 'sass-loader',
  35. options: {
  36. includePaths: [
  37. path.resolve(__dirname, 'node_modules/')
  38. ],
  39. sourceMap: true
  40. }
  41. }
  42. ]
  43. }]
  44. }
  45. });