webpack.config.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const path = require("path");
  2. const TerserJSPlugin = require('terser-webpack-plugin');
  3. const HtmlPlugin = require("html-webpack-plugin");
  4. const MiniCssExtractPlugin = require("mini-css-extract-plugin");
  5. const CleanWebpackPlugin = require("clean-webpack-plugin");
  6. const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
  7. const webpack = require("webpack");
  8. module.exports = {
  9. plugins: [
  10. new CleanWebpackPlugin(),
  11. new HtmlPlugin(
  12. {
  13. template: "./ui/frontend/errors_template.tpl",
  14. filename: path.resolve(__dirname, './ui/frontend/errors.tpl'),
  15. }
  16. ),
  17. new HtmlPlugin(
  18. {
  19. template: "./ui/frontend/masterpage_template.tpl",
  20. filename: path.resolve(__dirname, './ui/frontend/masterpage.tpl'),
  21. }
  22. ),
  23. new MiniCssExtractPlugin({filename: "styles.[contenthash].css"}),
  24. new webpack.ProvidePlugin({
  25. $: 'jquery',
  26. jQuery: 'jquery',
  27. "window.jQuery": 'jquery'
  28. })
  29. ],
  30. module: {
  31. rules: [
  32. {
  33. // For css...
  34. test: /\.(css|scss)$/,
  35. // ...use this loaders
  36. use: [
  37. MiniCssExtractPlugin.loader,
  38. "css-loader",
  39. "sass-loader"
  40. ]
  41. },
  42. // Import various assets
  43. {test: /\.(jpg|png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000'}
  44. ]
  45. },
  46. optimization: {
  47. minimizer: [
  48. new TerserJSPlugin(
  49. // Discard Comments
  50. {terserOptions: {output: {comments: false}}, parallel: 4}
  51. ),
  52. new OptimizeCSSAssetsPlugin(
  53. // Discard Comments
  54. {cssProcessorPluginOptions: {preset: ['default', {discardComments: {removeAll: true}}]}}
  55. )
  56. ],
  57. },
  58. entry: "./ui/frontend/js/index.js",
  59. output: {
  60. publicPath: '/omlink/assets/frontend/',
  61. path: path.resolve(__dirname, "assets/frontend/"),
  62. //publicPath: '/omlink/src/openmind/admin/ui/assets/dist/',
  63. //path: path.resolve(__dirname, "ui/assets/dist/"),
  64. filename: "bundle.[contenthash].js"
  65. },
  66. };