webpack.config.js 2.1 KB

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