This repository has been archived by the owner on Aug 6, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathwebpack.renderer.config.js
99 lines (95 loc) · 2.74 KB
/
webpack.renderer.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
const path = require("path")
const webpack = require("webpack")
const ExtractCssChunks = require("extract-css-chunks-webpack-plugin")
const HtmlWebpackPlugin = require("html-webpack-plugin")
const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin")
const { productName, dependencies } = require("./package.json")
const { version: electronVersion } = require(path.resolve(
__dirname,
"node_modules/electron/package.json",
))
const isDevelopment = process.env.WEBPACK_DEV_SERVER === "true"
module.exports = {
target: "electron-renderer",
devtool: "eval-source-map",
mode: isDevelopment ? "development" : "production",
output: {
path: path.resolve(__dirname, "dist/electron"),
},
entry: {
renderer: ["./src/renderer/index.css", "./src/renderer/index.jsx"],
},
resolve: {
modules: [
path.resolve(__dirname, "node_modules"),
path.resolve(__dirname, "src/renderer"),
],
extensions: [".mjs", ".js", ".jsx"],
},
plugins: [
new webpack.ExternalsPlugin("commonjs", Object.keys(dependencies)),
new HtmlWebpackPlugin({
title: productName,
template: "src/renderer/index.ejs",
}),
new ExtractCssChunks(),
isDevelopment &&
new ReactRefreshWebpackPlugin({ disableRefreshCheck: true }),
].filter(Boolean),
module: {
rules: [
{
test: /\.jsx?$/,
include: [path.resolve(__dirname, "src/renderer")],
use: {
loader: "babel-loader",
options: {
presets: [
[
"@babel/preset-env",
{
modules: false,
targets: `electron ${electronVersion}`,
},
],
"@babel/preset-react",
],
plugins: [
"@babel/plugin-proposal-export-default-from",
["@babel/plugin-proposal-decorators", { legacy: true }],
["@babel/plugin-proposal-class-properties", { loose: true }],
isDevelopment && "react-refresh/babel",
].filter(Boolean),
},
},
},
{
test: /\.css$/,
include: [path.resolve(__dirname, "src/renderer")],
use: [
{
loader: ExtractCssChunks.loader,
options: {
hmr: isDevelopment,
reloadAll: true,
},
},
{
loader: "css-loader",
options: { modules: true },
},
{
loader: "postcss-loader",
options: {
plugins: [
require("postcss-smart-import"),
require("precss"),
require("autoprefixer"),
],
},
},
],
},
],
},
}