webpack.config.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. const path = require('path')
  2. const externals = {}
  3. for (const key of [
  4. 'child_process',
  5. 'crypto',
  6. 'dns',
  7. 'fs',
  8. 'http',
  9. 'https',
  10. 'net',
  11. 'path',
  12. 'querystring',
  13. 'tls',
  14. 'tty',
  15. 'url',
  16. 'zlib',
  17. '../build/Release/cpufeatures.node',
  18. './crypto/build/Release/sshcrypto.node',
  19. ]) {
  20. externals[key] = `commonjs ${key}`
  21. }
  22. module.exports = {
  23. name: 'tabby-web-entry',
  24. target: 'web',
  25. entry: {
  26. preload: path.resolve(__dirname, 'entry.preload.ts'),
  27. bundle: path.resolve(__dirname, 'entry.ts'),
  28. },
  29. mode: process.env.TABBY_DEV ? 'development' : 'production',
  30. optimization:{
  31. minimize: false,
  32. },
  33. context: __dirname,
  34. devtool: 'source-map',
  35. output: {
  36. path: path.join(__dirname, 'dist'),
  37. pathinfo: true,
  38. filename: '[name].js',
  39. publicPath: 'auto',
  40. },
  41. resolve: {
  42. modules: ['../app/node_modules', 'node_modules', '../node_modules', '../app/assets/'].map(x => path.join(__dirname, x)),
  43. extensions: ['.ts', '.js'],
  44. fallback: {
  45. stream: require.resolve('stream-browserify'),
  46. assert: require.resolve('assert/'),
  47. constants: require.resolve('constants-browserify'),
  48. util: require.resolve('util/'),
  49. },
  50. },
  51. module: {
  52. rules: [
  53. {
  54. test: /\.ts$/,
  55. use: {
  56. loader: 'ts-loader',
  57. options: {
  58. configFile: path.resolve(__dirname, 'tsconfig.json'),
  59. },
  60. },
  61. },
  62. { test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
  63. { test: /\.css$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
  64. {
  65. test: /\.(png|svg)$/,
  66. use: {
  67. loader: 'url-loader',
  68. options: {
  69. limit: 999999,
  70. },
  71. },
  72. },
  73. {
  74. test: /\.(ttf|eot|otf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  75. use: {
  76. loader: 'file-loader',
  77. options: {
  78. name: 'fonts/[name].[ext]',
  79. },
  80. },
  81. },
  82. ],
  83. },
  84. externals,
  85. }