webpack.config.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. var theme = 'MetroMumbleLight'
  2. var path = require('path')
  3. module.exports = {
  4. entry: [
  5. './app/index.js',
  6. './app/index.html'
  7. ],
  8. output: {
  9. filename: 'index.js',
  10. path: './dist'
  11. },
  12. module: {
  13. postLoaders: [
  14. {
  15. include: /mumble-streams\/lib\/data.js/,
  16. loader: 'transform-loader?brfs'
  17. }
  18. ],
  19. loaders: [
  20. {
  21. test: /\.js$/,
  22. exclude: /node_modules/,
  23. loader: 'babel-loader',
  24. query: {
  25. presets: ['es2015'],
  26. plugins: ['transform-runtime']
  27. }
  28. },
  29. {
  30. test: /\.html$/,
  31. loaders: [
  32. 'file-loader?name=[name].[ext]',
  33. 'extract-loader',
  34. 'html-loader?' + JSON.stringify({
  35. attrs: ['img:src', 'link:href'],
  36. interpolate: 'require',
  37. root: theme
  38. })
  39. ]
  40. },
  41. {
  42. test: /\.css$/,
  43. loaders: [
  44. 'file-loader',
  45. 'extract-loader',
  46. 'css-loader'
  47. ]
  48. },
  49. {
  50. test: /manifest\.json$|\.xml$/,
  51. loaders: [
  52. 'file-loader',
  53. 'extract-loader',
  54. 'regexp-replace-loader?' + JSON.stringify({
  55. match: {
  56. pattern: "#require\\('([^']*)'\\)",
  57. flags: 'g'
  58. },
  59. replaceWith: '"+require("$1")+"'
  60. }),
  61. 'raw-loader'
  62. ]
  63. },
  64. {
  65. test: /\.json$/,
  66. exclude: /manifest\.json$/,
  67. loader: 'json-loader'
  68. },
  69. {
  70. test: /\.(svg|png|ico)$/,
  71. loader: 'file-loader'
  72. }
  73. ]
  74. },
  75. resolve: {
  76. alias: {
  77. webworkify: 'webworkify-webpack-dropin'
  78. },
  79. root: [
  80. path.resolve('./themes/')
  81. ]
  82. },
  83. includes: {
  84. pattern: function (filepath) {
  85. return {
  86. re: /#require\((.+)\)/,
  87. index: 1
  88. }
  89. }
  90. }
  91. }