You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

webpack.config.js 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const path = require('path');
  2. const TerserPlugin = require('terser-webpack-plugin');
  3. const { SourceMapDevToolPlugin } = require('webpack');
  4. module.exports = {
  5. mode: 'production',
  6. entry: {
  7. index: ['./web_src/js/index'],
  8. swagger: ['./web_src/js/swagger'],
  9. },
  10. devtool: false,
  11. output: {
  12. path: path.resolve(__dirname, 'public/js'),
  13. filename: '[name].js',
  14. chunkFilename: '[name].js',
  15. },
  16. optimization: {
  17. minimize: true,
  18. minimizer: [new TerserPlugin({
  19. sourceMap: true,
  20. extractComments: false,
  21. terserOptions: {
  22. output: {
  23. comments: false,
  24. },
  25. },
  26. })],
  27. },
  28. module: {
  29. rules: [
  30. {
  31. test: /\.js$/,
  32. exclude: /node_modules/,
  33. use: {
  34. loader: 'babel-loader',
  35. options: {
  36. presets: [
  37. [
  38. '@babel/preset-env',
  39. {
  40. useBuiltIns: 'usage',
  41. corejs: 3,
  42. }
  43. ]
  44. ],
  45. plugins: [
  46. [
  47. '@babel/plugin-transform-runtime',
  48. {
  49. regenerator: true,
  50. }
  51. ]
  52. ],
  53. }
  54. }
  55. },
  56. {
  57. test: /\.css$/i,
  58. use: ['style-loader', 'css-loader'],
  59. },
  60. ]
  61. },
  62. plugins: [
  63. new SourceMapDevToolPlugin({
  64. filename: '[name].js.map',
  65. exclude: [
  66. 'swagger.js',
  67. ],
  68. }),
  69. ],
  70. performance: {
  71. assetFilter: (filename) => {
  72. return !filename.endsWith('.map') && filename !== 'swagger.js';
  73. }
  74. },
  75. };