webpack.main.config.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. 'use strict'
  2. process.env.BABEL_ENV = 'main'
  3. const path = require('path')
  4. const { dependencies } = require('../package.json')
  5. const webpack = require('webpack')
  6. const TerserPlugin = require('terser-webpack-plugin')
  7. const config = require('../config')
  8. const { getConfig } = require("./utils")
  9. function resolve(dir) {
  10. return path.join(__dirname, '..', dir)
  11. }
  12. let mainConfig = {
  13. infrastructureLogging: {
  14. level: 'warn'
  15. },
  16. entry: {
  17. main: path.join(__dirname, '../src/main/index.js')
  18. },
  19. externals: [
  20. ...Object.keys(dependencies || {})
  21. ],
  22. module: {
  23. rules: [
  24. {
  25. test: /\.js$/,
  26. loader: 'esbuild-loader'
  27. },
  28. {
  29. test: /\.node$/,
  30. use: 'node-loader'
  31. }
  32. ]
  33. },
  34. node: {
  35. __dirname: process.env.NODE_ENV !== 'production',
  36. __filename: process.env.NODE_ENV !== 'production'
  37. },
  38. output: {
  39. filename: '[name].js',
  40. libraryTarget: 'commonjs2',
  41. path: path.join(__dirname, '../dist/electron')
  42. },
  43. plugins: [
  44. new webpack.DefinePlugin({
  45. 'process.env.userConfig':JSON.stringify(getConfig)
  46. })
  47. ],
  48. resolve: {
  49. alias: {
  50. '@config': resolve('config'),
  51. },
  52. extensions: ['.js', '.json', '.node']
  53. },
  54. target: 'electron-main',
  55. }
  56. /**
  57. * Adjust mainConfig for development settings
  58. */
  59. if (process.env.NODE_ENV !== 'production') {
  60. mainConfig.plugins.push(
  61. new webpack.DefinePlugin({
  62. '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`,
  63. 'process.env.libPath': `"${path.join(__dirname, `../${config.DllFolder}`).replace(/\\/g, '\\\\')}"`
  64. })
  65. )
  66. }
  67. /**
  68. * Adjust mainConfig for production settings
  69. */
  70. if (process.env.NODE_ENV === 'production' && config.build.cleanConsole) {
  71. mainConfig.optimization = {
  72. minimize: true,
  73. minimizer: [
  74. new TerserPlugin({
  75. terserOptions: {
  76. compress: {
  77. drop_console: true,
  78. drop_debugger: true,
  79. pure_funcs: ["console.log", "console.warn"]
  80. }
  81. }
  82. })
  83. ]
  84. }
  85. mainConfig.plugins.push(
  86. new webpack.DefinePlugin({
  87. 'process.env.NODE_ENV': '"production"'
  88. })
  89. )
  90. }
  91. module.exports = mainConfig