webpack.config.js 2.4 KB

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