summaryrefslogtreecommitdiff
path: root/electron/service/config/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'electron/service/config/main.js')
-rw-r--r--electron/service/config/main.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/electron/service/config/main.js b/electron/service/config/main.js
new file mode 100644
index 00000000..3083dea0
--- /dev/null
+++ b/electron/service/config/main.js
@@ -0,0 +1,73 @@
+'use strict'
+
+const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin')
+const config = require('../project.config')
+
+const resolveClientEnv = require('../utils/resolveClientEnv')
+const paths = require('../utils/paths')
+const { merge } = require('webpack-merge')
+const TerserPlugin = require('terser-webpack-plugin')
+const cssWebpackConfig = require('./css')
+const terserOptions = require('./terserOptions')
+const isProd = process.env.NODE_ENV === 'production'
+
+module.exports = merge(cssWebpackConfig, {
+ context: process.cwd(),
+ mode: 'production',
+ entry: {
+ main: './src/main/index.js',
+ preload: './src/main/preload.js',
+ },
+
+ node: {
+ __dirname: false,
+ },
+
+ optimization: {
+ minimize: true,
+ minimizer: [new TerserPlugin(terserOptions())],
+ moduleIds: 'named',
+ },
+ target: ['electron-main'],
+
+ output: {
+ path: paths.resolve(config.outputDir),
+ publicPath: config.dev.publicPath,
+ filename: '[name].js',
+ },
+
+ resolve: {
+ alias: {
+ '@': paths.resolve('src'),
+ },
+ extensions: ['.ts', '.tsx', '.js', '.jsx', '.vue', '.json', 'html', 'ejs'],
+ },
+
+ plugins: [
+ new CaseSensitivePathsPlugin(),
+ ],
+
+ module: {
+ noParse: /^(vue|vue-router)$/,
+
+ rules: [
+ // ts
+ {
+ test: /\.tsx?$/,
+ use: [
+ 'thread-loader',
+ 'babel-loader',
+ {
+ loader: 'ts-loader',
+ options: {
+ transpileOnly: true,
+ appendTsSuffixTo: ['\\.vue$'],
+ happyPackMode: true,
+ },
+ },
+ ],
+ },
+ ],
+ },
+}
+) \ No newline at end of file