webpack.config.cjs 1.4 KB

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