sepp0

Untitled

Dec 22nd, 2021 (edited)
415
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // tsconfig.js
  2. {
  3.   "compileOnSave": true,
  4.   "include": ["src/**/*.ts", "src/**/*.tsx"],
  5.   "exclude": ["node_modules"],
  6.   "compilerOptions": {
  7.     "target": "ES6",
  8.     "strict": true,
  9.     "outDir": "./dist",
  10.     "module": "esnext",
  11.     "sourceMap": true,
  12.     "jsx": "react-jsx",
  13.     "esModuleInterop": true,
  14.     "removeComments": true
  15.   }
  16. }
  17.  
  18. // package.json
  19. {
  20.   "name": "reactelectronapp",
  21.   "version": "1.0.0",
  22.   "description": "my react and electron app",
  23.   "main": "main.js",
  24.   "scripts": {
  25.     "build": "webpack --config webpack.config.js --mode=development",
  26.     "start": "npm run build & electron ./dist/main.js"
  27.   },
  28.   "author": "sforman",
  29.   "license": "ISC",
  30.   "dependencies": {
  31.     "react": "^17.0.2",
  32.     "react-dom": "^17.0.2",
  33.     "react-router-dom": "^6.2.1"
  34.   },
  35.   "devDependencies": {
  36.     "@babel/core": "^7.16.5",
  37.     "@babel/preset-env": "^7.16.5",
  38.     "@babel/preset-react": "^7.16.5",
  39.     "@babel/preset-typescript": "^7.16.5",
  40.     "@types/electron": "^1.6.10",
  41.     "@types/node": "^17.0.2",
  42.     "@types/react": "^17.0.37",
  43.     "@types/react-dom": "^17.0.11",
  44.     "babel-loader": "^8.2.3",
  45.     "css-loader": "^6.5.1",
  46.     "electron": "^16.0.5",
  47.     "file-loader": "^6.2.0",
  48.     "html-loader": "^3.0.1",
  49.     "html-webpack-plugin": "^5.5.0",
  50.     "node-sass": "^7.0.0",
  51.     "sass-loader": "^12.4.0",
  52.     "style-loader": "^3.3.1",
  53.     "ts-loader": "^9.2.6",
  54.     "typescript": "^4.5.4",
  55.     "webpack": "^5.65.0",
  56.     "webpack-cli": "^4.9.1",
  57.     "webpack-dev-server": "^4.7.0"
  58.   },
  59.   "prettier": {
  60.     // irrelevant
  61.   }
  62. }
  63.  
  64. // webpack.config.json
  65. const HtmlWebpackPlugin = require('html-webpack-plugin');
  66.  
  67. module.exports = [
  68.   {
  69.     mode: 'development',
  70.     target: 'electron-main',
  71.     devtool: 'inline-source-map',
  72.     entry: __dirname + '/src/main.ts',
  73.     output: {
  74.       path: __dirname + '/dist',
  75.       filename: 'main.js'
  76.     },
  77.     module: {
  78.       rules: [
  79.         {
  80.           test: /\.ts$/,
  81.           exclude: /node_modules/,
  82.           use: ['ts-loader']
  83.         }
  84.       ]
  85.     },
  86.     resolve: {
  87.       extensions: ['.ts', '.js']
  88.     }
  89.   },
  90.   {
  91.     mode: 'development',
  92.     target: 'electron-main',
  93.     devtool: 'inline-source-map',
  94.     entry: __dirname + '/src/index.tsx',
  95.     output: {
  96.       path: __dirname + '/dist',
  97.       filename: 'bundle.js'
  98.     },
  99.     module: {
  100.       rules: [
  101.         {
  102.           test: /\.tsx$/,
  103.           exclude: /node_modules/,
  104.           loader: 'babel-loader',
  105.           options: {
  106.             presets: [
  107.               '@babel/preset-env',
  108.               [
  109.                 '@babel/preset-react',
  110.                 {
  111.                   runtime: 'automatic'
  112.                 }
  113.               ],
  114.               '@babel/preset-typescript'
  115.             ]
  116.           }
  117.         },
  118.         {
  119.           test: /\.scss$/,
  120.           use: ['style-loader', 'css-loader', 'sass-loader']
  121.         },
  122.         {
  123.           test: /\.html$/,
  124.           use: ['html-loader']
  125.         },
  126.         {
  127.           test: /\.(png|jpe?g|gif|svg)$/i,
  128.           loader: 'file-loader',
  129.           options: {
  130.             name: 'images/[name].[ext]'
  131.           }
  132.         }
  133.       ]
  134.     },
  135.     resolve: {
  136.       extensions: ['.tsx', '.ts', '.js']
  137.     },
  138.     plugins: [
  139.       new HtmlWebpackPlugin({
  140.         template: __dirname + '/src/index.html'
  141.       })
  142.     ],
  143.     devServer: {
  144.       historyApiFallback: true,
  145.       static: __dirname + '/dist',
  146.       hot: true
  147.     }
  148.   }
  149. ];
  150.  
Add Comment
Please, Sign In to add comment