webpack.config.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. var theme = '../themes/MetroMumbleLight'
  2. var path = require('path');
  3. module.exports = {
  4. mode: 'production',
  5. entry: {
  6. index: [
  7. './app/index.js',
  8. './app/index.html'
  9. ],
  10. config: './app/config.js',
  11. theme: './app/theme.js',
  12. matrix: './app/matrix.js'
  13. },
  14. devServer: {
  15. contentBase: './dist',
  16. hot: true
  17. },
  18. devtool: "cheap-source-map",
  19. output: {
  20. path: path.join(__dirname, 'dist'),
  21. chunkFilename: '[chunkhash].js',
  22. filename: '[name].js'
  23. },
  24. module: {
  25. rules: [
  26. {
  27. test: /\.js$/,
  28. exclude: /node_modules/,
  29. use: {
  30. loader: 'babel-loader',
  31. options: {
  32. presets: ['@babel/preset-env'],
  33. plugins: ['@babel/plugin-transform-runtime']
  34. }
  35. }
  36. },
  37. {
  38. test: /\.html$/,
  39. use: [
  40. {
  41. loader: 'file-loader',
  42. options: { 'name': '[name].[ext]' }
  43. },
  44. {
  45. loader: "extract-loader"
  46. },
  47. {
  48. loader: 'html-loader',
  49. options: {
  50. attrs: ['img:src', 'link:href'],
  51. root: theme
  52. }
  53. }
  54. ]
  55. },
  56. {
  57. test: /\.css$/,
  58. use: [
  59. 'file-loader',
  60. 'extract-loader',
  61. 'css-loader'
  62. ]
  63. },
  64. {
  65. test: /\.scss$/,
  66. use: [
  67. 'file-loader?name=[hash].css',
  68. 'extract-loader',
  69. 'css-loader',
  70. 'sass-loader'
  71. ]
  72. },
  73. {
  74. type: 'javascript/auto',
  75. test: /manifest\.json$|\.xml$/,
  76. use: [
  77. 'file-loader',
  78. 'extract-loader',
  79. {
  80. loader: 'regexp-replace-loader',
  81. options: {
  82. match: {
  83. pattern: "#require\\('([^']*)'\\)",
  84. flags: 'g'
  85. },
  86. replaceWith: '"+require("$1")+"'
  87. }
  88. },
  89. 'raw-loader'
  90. ]
  91. },
  92. {
  93. test: /\.(svg|png|ico)$/,
  94. use: [
  95. 'file-loader'
  96. ]
  97. },
  98. {
  99. test: /worker\.js$/,
  100. use: { loader: 'worker-loader' }
  101. },
  102. {
  103. enforce: 'post',
  104. test: /mumble-streams\/lib\/data.js/,
  105. use: [
  106. 'transform-loader?brfs'
  107. ]
  108. }
  109. ]
  110. },
  111. target: 'web'
  112. }