webpack.config.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. const path = require('path');
  2. const resolve = (url) => path.resolve(__dirname, "..", url);
  3. module.exports = {
  4. entry: {
  5. 'worker-transfer-data': resolve("src/index.ts"),
  6. },
  7. module: {
  8. rules: [
  9. {
  10. test: /\.tsx?$/,
  11. use: [
  12. {
  13. loader: 'ts-loader'
  14. }
  15. ]
  16. },
  17. {
  18. test: /\.xml$/,
  19. use: {
  20. loader: 'raw-loader',
  21. },
  22. type: "javascript/auto"
  23. },
  24. {
  25. test: /\.(png|svg|jpe?g|gif)$/i,
  26. use: [
  27. {
  28. loader: 'url-loader',
  29. options: {
  30. limit: 18192,
  31. outputPath: 'img',
  32. name: '[name].[ext]?[hash]',
  33. esModule: false,
  34. },
  35. },
  36. ],
  37. type:"javascript/auto"
  38. },
  39. {
  40. test: /\.(mp3|wav)$/i,
  41. use: [
  42. {
  43. loader: 'file-loader',
  44. options: {
  45. outputPath: 'audio',
  46. esModule: false,
  47. },
  48. },
  49. ],
  50. type:"javascript/auto"
  51. },
  52. {
  53. test: /\.(woff|woff2|eot|ttf|otf)$/i,
  54. use: [
  55. {
  56. loader: 'file-loader',
  57. options: {
  58. outputPath: 'font',
  59. esModule: false,
  60. },
  61. },
  62. ],
  63. type:"javascript/auto"
  64. },
  65. {
  66. test: /\.wasm$/,
  67. type: 'webassembly/async',
  68. },
  69. ],
  70. },
  71. resolve: {
  72. extensions: ['.ts', '.tsx', '.js', '.json'],
  73. alias: {
  74. '@': resolve('src'),
  75. },
  76. },
  77. experiments: {
  78. syncWebAssembly: true,
  79. asyncWebAssembly: true,
  80. topLevelAwait: true,
  81. }
  82. };