webpack.config.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. const path = require('path');
  2. const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
  3. module.exports = {
  4. entry: path.resolve(__dirname, 'src', 'frontend', 'index.tsx'),
  5. module: {
  6. rules: [
  7. {
  8. test: /\.tsx?$/,
  9. use: 'ts-loader',
  10. exclude: /node_modules/,
  11. },
  12. {
  13. test: /\.css$/i,
  14. use: ["style-loader", "css-loader"],
  15. },
  16. {
  17. test: /\.svg$/,
  18. use: 'url-loader'
  19. },
  20. ],
  21. },
  22. resolve: {
  23. extensions: ['.tsx', '.ts', '.js'],
  24. fallback: {
  25. // allow using absolute paths when referring to 'onion' library.
  26. onion: path.resolve(__dirname, 'src', 'onion'),
  27. util: path.resolve(__dirname, 'src', 'onion', 'mock_node_util.ts'),
  28. // The following are needed to make NodeJS' 'crypto' module work in the browser:
  29. // Should probably migrate to the SubtleCrypto Web API
  30. crypto: require.resolve('crypto-browserify'),
  31. stream: require.resolve('stream-browserify'),
  32. buffer: require.resolve('buffer'),
  33. },
  34. },
  35. output: {
  36. filename: 'bundle.js',
  37. path: path.resolve(__dirname, 'dist'),
  38. },
  39. devServer: {
  40. static: path.resolve(__dirname, 'dist'),
  41. port: 9000,
  42. },
  43. plugins: [
  44. new ForkTsCheckerWebpackPlugin()
  45. ]
  46. };