Skip to content

Commit c79a343

Browse files
committed
Merge branch 'migration/webpack-merge' into develop
2 parents 143b905 + 2196fa9 commit c79a343

File tree

4 files changed

+51
-45
lines changed

4 files changed

+51
-45
lines changed

CHANGELOG_V4+.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2222
- `eslint-plugin-import` is now properly configured for both JavaScript and
2323
TypeScript files.
2424
- `jest.config.js` & `webpack.config.js` are no longer ignored by ESLint.
25+
- Improved the readability of `webpack.config.js` by migrating to `webpack-merge`
26+
from using `lodash.deepClone()` for merging configuration objects.
2527

2628
### Fixed
2729
- Module import order warnings in most modules.
@@ -31,10 +33,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3133
### Added
3234
- `eslint-import-resolver-typescript` *- Better TypeScript support for ESLint
3335
`import` plugin*
36+
- `webpack-merge` *- Replaced the sections using `lodash.deepClone()` in
37+
`webpack.config.js`*
3438

3539
### Removed
3640
- `eslint-import-resolver-webpack` *- Not being used in any part of the
3741
boilerplate*
42+
- `lodash` *- Replaced by `webpack-merge` for its' usage in `webpack.config.js`*
3843

3944
## [v4.0.0] - 2022-07-22
4045
### Added

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,14 @@
7777
"electron-builder": "^23.1.0",
7878
"file-loader": "^6.2.0",
7979
"html-webpack-plugin": "^5.5.0",
80-
"lodash": "^4.17.21",
8180
"rimraf": "^3.0.2",
8281
"style-loader": "^3.3.1",
8382
"ts-loader": "^9.3.1",
8483
"tsconfig-paths": "^4.0.0",
8584
"tsconfig-paths-webpack-plugin": "^3.5.2",
8685
"webpack": "^5.73.0",
87-
"webpack-cli": "^4.10.0"
86+
"webpack-cli": "^4.10.0",
87+
"webpack-merge": "^5.8.0"
8888
},
8989
"repository": {
9090
"type": "git",

webpack.config.js

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
const path = require('path');
22
const CopyPlugin = require('copy-webpack-plugin');
33
const HtmlWebpackPlugin = require('html-webpack-plugin');
4-
const lodash = require('lodash');
54
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
5+
const { merge } = require('webpack-merge');
66

77
function srcPaths(src) {
88
return path.join(__dirname, src);
@@ -11,7 +11,6 @@ function srcPaths(src) {
1111
const isEnvProduction = process.env.NODE_ENV === 'production';
1212
const isEnvDevelopment = process.env.NODE_ENV === 'development';
1313

14-
// #region Common settings
1514
const commonConfig = {
1615
devtool: isEnvDevelopment ? 'source-map' : false,
1716
mode: isEnvProduction ? 'production' : 'development',
@@ -45,51 +44,53 @@ const commonConfig = {
4544
],
4645
},
4746
};
48-
// #endregion
4947

50-
const mainConfig = lodash.cloneDeep(commonConfig);
51-
mainConfig.entry = './src/main/main.ts';
52-
mainConfig.target = 'electron-main';
53-
mainConfig.output.filename = 'main.bundle.js';
54-
mainConfig.plugins = [
55-
new CopyPlugin({
56-
patterns: [
57-
{
58-
from: 'package.json',
59-
to: 'package.json',
60-
transform: (content, _path) => {
61-
const jsonContent = JSON.parse(content);
62-
const electronVersion = jsonContent.devDependencies.electron;
48+
const mainConfig = merge(commonConfig, {
49+
entry: './src/main/main.ts',
50+
target: 'electron-main',
51+
output: { filename: 'main.bundle.js' },
52+
plugins: [
53+
new CopyPlugin({
54+
patterns: [
55+
{
56+
from: 'package.json',
57+
to: 'package.json',
58+
transform: (content, _path) => {
59+
const jsonContent = JSON.parse(content);
60+
const electronVersion = jsonContent.devDependencies.electron;
6361

64-
delete jsonContent.devDependencies;
65-
delete jsonContent.optionalDependencies;
66-
delete jsonContent.scripts;
67-
delete jsonContent.build;
62+
delete jsonContent.devDependencies;
63+
delete jsonContent.optionalDependencies;
64+
delete jsonContent.scripts;
65+
delete jsonContent.build;
6866

69-
jsonContent.main = './main.bundle.js';
70-
jsonContent.scripts = { start: 'electron ./main.bundle.js' };
71-
jsonContent.devDependencies = { electron: electronVersion };
67+
jsonContent.main = './main.bundle.js';
68+
jsonContent.scripts = { start: 'electron ./main.bundle.js' };
69+
jsonContent.devDependencies = { electron: electronVersion };
7270

73-
return JSON.stringify(jsonContent, undefined, 2);
71+
return JSON.stringify(jsonContent, undefined, 2);
72+
},
7473
},
75-
},
76-
],
77-
}),
78-
];
74+
],
75+
}),
76+
],
77+
});
7978

80-
const preloadConfig = lodash.cloneDeep(commonConfig);
81-
preloadConfig.entry = './src/preload/preload.ts';
82-
preloadConfig.target = 'electron-preload';
83-
preloadConfig.output.filename = 'preload.bundle.js';
79+
const preloadConfig = merge(commonConfig, {
80+
entry: './src/preload/preload.ts',
81+
target: 'electron-preload',
82+
output: { filename: 'preload.bundle.js' },
83+
});
8484

85-
const rendererConfig = lodash.cloneDeep(commonConfig);
86-
rendererConfig.entry = './src/renderer/renderer.tsx';
87-
rendererConfig.target = 'electron-renderer';
88-
rendererConfig.output.filename = 'renderer.bundle.js';
89-
rendererConfig.plugins = [
90-
new HtmlWebpackPlugin({
91-
template: path.resolve(__dirname, './public/index.html'),
92-
}),
93-
];
85+
const rendererConfig = merge(commonConfig, {
86+
entry: './src/renderer/renderer.tsx',
87+
target: 'electron-renderer',
88+
output: { filename: 'renderer.bundle.js' },
89+
plugins: [
90+
new HtmlWebpackPlugin({
91+
template: path.resolve(__dirname, './public/index.html'),
92+
}),
93+
],
94+
});
9495

9596
module.exports = [mainConfig, preloadConfig, rendererConfig];

0 commit comments

Comments
 (0)