webpack.renderer.config.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. const webpack = require('webpack')
  2. const merge = require('webpack-merge')
  3. const HtmlWebpackPlugin = require('html-webpack-plugin')
  4. const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin')
  5. const baseConfig = require('./webpack.base.config')
  6. module.exports = merge.smart(baseConfig, {
  7. target: 'electron-renderer',
  8. entry: {
  9. app: ['@babel/polyfill','./src/renderer/app.tsx']
  10. },
  11. module: {
  12. rules: [
  13. {
  14. test: /\.tsx?$/,
  15. exclude: /node_modules/,
  16. loader: 'babel-loader',
  17. options: {
  18. cacheDirectory: true,
  19. babelrc: false,
  20. presets: [
  21. [
  22. '@babel/preset-env',
  23. { targets: { browsers: 'last 2 versions ' } }
  24. ],
  25. '@babel/preset-typescript',
  26. '@babel/preset-react'
  27. ],
  28. plugins: [
  29. ['@babel/plugin-proposal-class-properties', { loose: true }]
  30. ]
  31. }
  32. },
  33. {
  34. test: /\.scss$/,
  35. loaders: ['style-loader', 'css-loader', 'sass-loader']
  36. },
  37. {
  38. test: /\.css$/,
  39. loaders: ['style-loader', 'css-loader']
  40. },
  41. {
  42. test: /\.(gif|png|jpe?g|svg)$/,
  43. use: [
  44. 'file-loader',
  45. {
  46. loader: 'image-webpack-loader',
  47. options: {
  48. disable: true
  49. }
  50. }
  51. ]
  52. },
  53. // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
  54. {
  55. enforce: 'pre',
  56. test: /\.js$/,
  57. loader: 'source-map-loader'
  58. }
  59. ]
  60. },
  61. plugins: [
  62. new ForkTsCheckerWebpackPlugin({
  63. reportFiles: ['src/renderer/**/*']
  64. }),
  65. new webpack.NamedModulesPlugin(),
  66. new HtmlWebpackPlugin(),
  67. new webpack.DefinePlugin({
  68. 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
  69. })
  70. ]
  71. })