rebuiltron 6.0.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configurations/base.js +4 -56
- package/configurations/main.js +10 -0
- package/configurations/preloads.js +8 -0
- package/configurations/renderers.js +60 -1
- package/package.json +4 -2
- package/tasks/startDevServer.js +23 -18
- package/tasks/startElectron.js +1 -0
package/configurations/base.js
CHANGED
|
@@ -1,29 +1,18 @@
|
|
|
1
1
|
const { createHash } = require("crypto");
|
|
2
2
|
|
|
3
|
-
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
4
3
|
const CaseSensitivePathsPlugin = require("case-sensitive-paths-webpack-plugin");
|
|
5
|
-
const InlineChunkHtmlPlugin = require("react-dev-utils/InlineChunkHtmlPlugin");
|
|
6
4
|
const TerserPlugin = require("terser-webpack-plugin");
|
|
7
|
-
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
8
|
-
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
|
|
9
5
|
const ModuleNotFoundPlugin = require("react-dev-utils/ModuleNotFoundPlugin");
|
|
10
|
-
const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin");
|
|
11
|
-
const CopyPlugin = require("copy-webpack-plugin");
|
|
12
6
|
|
|
13
7
|
const paths = require("../helpers/paths");
|
|
14
|
-
const {
|
|
8
|
+
const { isEnvDevelopment, isEnvProduction } = require("../helpers/environment");
|
|
15
9
|
const { emptyOr } = require("../helpers/utils");
|
|
16
|
-
const imageLoaders = require("../loaders/images");
|
|
17
|
-
const styleLoaders = require("../loaders/style");
|
|
18
|
-
const javascriptLoaders = require("../loaders/javascript");
|
|
19
|
-
const rebuiltronConfig = require("../rebuiltronConfig");
|
|
20
10
|
|
|
21
11
|
|
|
22
12
|
const { srcAlias } = require(paths.appConfig);
|
|
23
13
|
|
|
24
14
|
|
|
25
15
|
module.exports = {
|
|
26
|
-
mode: isEnvProduction ? "production" : "development",
|
|
27
16
|
stats: "errors-warnings",
|
|
28
17
|
bail: isEnvProduction,
|
|
29
18
|
output: {
|
|
@@ -72,55 +61,14 @@ module.exports = {
|
|
|
72
61
|
comments: false
|
|
73
62
|
}
|
|
74
63
|
}
|
|
75
|
-
})
|
|
76
|
-
new CssMinimizerPlugin()
|
|
64
|
+
})
|
|
77
65
|
]
|
|
78
66
|
},
|
|
79
67
|
module: {
|
|
80
|
-
strictExportPresence: true
|
|
81
|
-
rules: [
|
|
82
|
-
// Handles `node_modules` packages that contain sourcemaps
|
|
83
|
-
...emptyOr(shouldUseSourceMap, [{
|
|
84
|
-
enforce: "pre",
|
|
85
|
-
exclude: /@babel(?:\/|\\{1,2})runtime/,
|
|
86
|
-
test: /\.(js|mjs|jsx|ts|tsx|css)$/,
|
|
87
|
-
loader: require.resolve("source-map-loader")
|
|
88
|
-
}]),
|
|
89
|
-
{
|
|
90
|
-
oneOf: [
|
|
91
|
-
...imageLoaders,
|
|
92
|
-
...javascriptLoaders,
|
|
93
|
-
...styleLoaders,
|
|
94
|
-
{
|
|
95
|
-
// Makes sure the assets get served by `WebpackDevServer`
|
|
96
|
-
exclude: [/^$/, /\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
|
|
97
|
-
type: "asset/resource"
|
|
98
|
-
}
|
|
99
|
-
]
|
|
100
|
-
}
|
|
101
|
-
]
|
|
68
|
+
strictExportPresence: true
|
|
102
69
|
},
|
|
103
70
|
plugins: [
|
|
104
|
-
...emptyOr(
|
|
105
|
-
new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime-.+[.]js/]), // Injects scripts into HTML
|
|
106
|
-
new MiniCssExtractPlugin({
|
|
107
|
-
filename: `${rebuiltronConfig.buildDirs.css}/[name].[contenthash:8].css`,
|
|
108
|
-
chunkFilename: `${rebuiltronConfig.buildDirs.css}/[name].[contenthash:8].chunk.css`
|
|
109
|
-
}),
|
|
110
|
-
new CopyPlugin({
|
|
111
|
-
patterns: [{
|
|
112
|
-
from: paths.appPublic,
|
|
113
|
-
to: paths.appBuild,
|
|
114
|
-
globOptions: {
|
|
115
|
-
ignore: ["**/*.html"]
|
|
116
|
-
}
|
|
117
|
-
}]
|
|
118
|
-
})
|
|
119
|
-
]),
|
|
120
|
-
...emptyOr(isEnvDevelopment, [
|
|
121
|
-
new ReactRefreshWebpackPlugin({ overlay: false }),
|
|
122
|
-
new CaseSensitivePathsPlugin() // Detects case errors in import paths
|
|
123
|
-
]),
|
|
71
|
+
...emptyOr(isEnvDevelopment, [new CaseSensitivePathsPlugin()]), // Detects case errors in import paths
|
|
124
72
|
new ModuleNotFoundPlugin(paths.appPath) // Gives some necessary context to module not found errors
|
|
125
73
|
],
|
|
126
74
|
performance: false // Performance processing is already handled via `FileSizeReporter`
|
package/configurations/main.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const paths = require("../helpers/paths");
|
|
2
2
|
const rebuiltronConfig = require("../rebuiltronConfig");
|
|
3
3
|
const baseConfig = require("./base");
|
|
4
|
+
const javascriptLoaders = require("../loaders/javascript");
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
const { main } = require(paths.appConfig);
|
|
@@ -8,6 +9,7 @@ const { main } = require(paths.appConfig);
|
|
|
8
9
|
|
|
9
10
|
module.exports = {
|
|
10
11
|
...baseConfig,
|
|
12
|
+
mode: "production",
|
|
11
13
|
target: "electron-main",
|
|
12
14
|
entry: {
|
|
13
15
|
[rebuiltronConfig.buildFileNames.main]: main
|
|
@@ -15,5 +17,13 @@ module.exports = {
|
|
|
15
17
|
output: {
|
|
16
18
|
...baseConfig.output,
|
|
17
19
|
filename: `${rebuiltronConfig.buildDirs.js}/[name].js`
|
|
20
|
+
},
|
|
21
|
+
module: {
|
|
22
|
+
...baseConfig.module,
|
|
23
|
+
rules: [
|
|
24
|
+
{
|
|
25
|
+
oneOf: javascriptLoaders
|
|
26
|
+
}
|
|
27
|
+
]
|
|
18
28
|
}
|
|
19
29
|
};
|
|
@@ -3,6 +3,7 @@ const { mapKeys } = require("lodash");
|
|
|
3
3
|
const paths = require("../helpers/paths");
|
|
4
4
|
const rebuiltronConfig = require("../rebuiltronConfig");
|
|
5
5
|
const baseConfig = require("./base");
|
|
6
|
+
const javascriptLoaders = require("../loaders/javascript");
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
const { preloads } = require(paths.appConfig);
|
|
@@ -10,6 +11,7 @@ const { preloads } = require(paths.appConfig);
|
|
|
10
11
|
|
|
11
12
|
module.exports = {
|
|
12
13
|
...baseConfig,
|
|
14
|
+
mode: "production",
|
|
13
15
|
target: "electron-preload",
|
|
14
16
|
entry: mapKeys(preloads, (_value, entryName) => (
|
|
15
17
|
`${rebuiltronConfig.buildFileNames.preload}.${entryName}`
|
|
@@ -17,5 +19,11 @@ module.exports = {
|
|
|
17
19
|
output: {
|
|
18
20
|
...baseConfig.output,
|
|
19
21
|
filename: `${rebuiltronConfig.buildDirs.js}/[name].js`
|
|
22
|
+
},
|
|
23
|
+
module: {
|
|
24
|
+
...baseConfig.module,
|
|
25
|
+
rules: [{
|
|
26
|
+
oneOf: javascriptLoaders
|
|
27
|
+
}]
|
|
20
28
|
}
|
|
21
29
|
};
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
const path = require("path");
|
|
2
2
|
|
|
3
3
|
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
4
|
+
const CopyPlugin = require("copy-webpack-plugin");
|
|
5
|
+
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
6
|
+
const InlineChunkHtmlPlugin = require("react-dev-utils/InlineChunkHtmlPlugin");
|
|
7
|
+
const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin");
|
|
8
|
+
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
|
|
4
9
|
const { keys } = require("lodash");
|
|
5
10
|
|
|
6
11
|
const paths = require("../helpers/paths");
|
|
7
|
-
const { isEnvProduction, shouldUseSourceMap } = require("../helpers/environment");
|
|
12
|
+
const { isEnvProduction, isEnvDevelopment, shouldUseSourceMap } = require("../helpers/environment");
|
|
8
13
|
const { emptyOr } = require("../helpers/utils");
|
|
9
14
|
const rebuiltronConfig = require("../rebuiltronConfig");
|
|
10
15
|
const baseConfig = require("./base");
|
|
16
|
+
const imageLoaders = require("../loaders/images");
|
|
17
|
+
const styleLoaders = require("../loaders/style");
|
|
18
|
+
const javascriptLoaders = require("../loaders/javascript");
|
|
11
19
|
|
|
12
20
|
|
|
13
21
|
const { renderers } = require(paths.appConfig);
|
|
@@ -15,6 +23,7 @@ const { renderers } = require(paths.appConfig);
|
|
|
15
23
|
|
|
16
24
|
module.exports = {
|
|
17
25
|
...baseConfig,
|
|
26
|
+
mode: isEnvProduction ? "production" : "development",
|
|
18
27
|
target: "browserslist",
|
|
19
28
|
devtool: shouldUseSourceMap && (isEnvProduction ? "source-map" : "cheap-module-source-map"),
|
|
20
29
|
entry: renderers,
|
|
@@ -24,8 +33,58 @@ module.exports = {
|
|
|
24
33
|
chunkFilename: `${rebuiltronConfig.buildDirs.js}/${isEnvProduction ? "[name].[contenthash:8].chunk.js" : "[name].chunk.js"}`,
|
|
25
34
|
assetModuleFilename: `${rebuiltronConfig.buildDirs.media}/[name].[hash][ext]`
|
|
26
35
|
},
|
|
36
|
+
optimization: {
|
|
37
|
+
...baseConfig.optimization,
|
|
38
|
+
minimizer: [
|
|
39
|
+
...baseConfig.optimization.minimizer,
|
|
40
|
+
new CssMinimizerPlugin()
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
module: {
|
|
44
|
+
...baseConfig.module,
|
|
45
|
+
rules: [
|
|
46
|
+
// Handles `node_modules` packages that contain sourcemaps
|
|
47
|
+
...emptyOr(shouldUseSourceMap, [{
|
|
48
|
+
enforce: "pre",
|
|
49
|
+
exclude: /@babel(?:\/|\\{1,2})runtime/,
|
|
50
|
+
test: /\.(js|mjs|jsx|ts|tsx|css)$/,
|
|
51
|
+
loader: require.resolve("source-map-loader")
|
|
52
|
+
}]),
|
|
53
|
+
{
|
|
54
|
+
oneOf: [
|
|
55
|
+
...imageLoaders,
|
|
56
|
+
...javascriptLoaders,
|
|
57
|
+
...styleLoaders,
|
|
58
|
+
{
|
|
59
|
+
// Makes sure the assets get served by `WebpackDevServer`
|
|
60
|
+
exclude: [/^$/, /\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
|
|
61
|
+
type: "asset/resource"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
27
67
|
plugins: [
|
|
28
68
|
...baseConfig.plugins,
|
|
69
|
+
...emptyOr(isEnvProduction, [
|
|
70
|
+
new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime-.+[.]js/]), // Injects scripts into HTML
|
|
71
|
+
new MiniCssExtractPlugin({
|
|
72
|
+
filename: `${rebuiltronConfig.buildDirs.css}/[name].[contenthash:8].css`,
|
|
73
|
+
chunkFilename: `${rebuiltronConfig.buildDirs.css}/[name].[contenthash:8].chunk.css`
|
|
74
|
+
}),
|
|
75
|
+
new CopyPlugin({
|
|
76
|
+
patterns: [{
|
|
77
|
+
from: paths.appPublic,
|
|
78
|
+
to: paths.appBuild,
|
|
79
|
+
globOptions: {
|
|
80
|
+
ignore: ["**/*.html"]
|
|
81
|
+
}
|
|
82
|
+
}]
|
|
83
|
+
})
|
|
84
|
+
]),
|
|
85
|
+
...emptyOr(isEnvDevelopment, [
|
|
86
|
+
new ReactRefreshWebpackPlugin({ overlay: false })
|
|
87
|
+
]),
|
|
29
88
|
...keys(renderers).map((renderer) => (
|
|
30
89
|
new HtmlWebpackPlugin({
|
|
31
90
|
inject: true,
|
package/package.json
CHANGED
package/tasks/startDevServer.js
CHANGED
|
@@ -13,28 +13,33 @@ const spinnies = require("../helpers/spinnies");
|
|
|
13
13
|
* @returns {Promise<WebpackDevServer>} Development server instance
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
module.exports =
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
module.exports = (port) => (
|
|
17
|
+
new Promise(async (resolve) => {
|
|
18
|
+
let devServer;
|
|
19
|
+
let isFirstRun = true;
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
const rendererCompiler = webpack(webpackConfig.development.renderers);
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
clearConsole();
|
|
24
|
-
spinnies.add("compile", { text: "Compiling..." });
|
|
25
|
-
});
|
|
23
|
+
spinnies.add("devServer", { text: "Starting the development server" });
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
rendererCompiler.hooks.invalid.tap("invalid", () => {
|
|
26
|
+
clearConsole();
|
|
27
|
+
spinnies.add("compile", { text: "Compiling..." });
|
|
28
|
+
});
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
rendererCompiler.hooks.done.tap("done", () => {
|
|
31
|
+
if (isFirstRun) {
|
|
32
|
+
isFirstRun = false;
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
spinnies.succeed("devServer", { text: `Development server running on port ${bold(port)}` });
|
|
35
|
+
return resolve(devServer);
|
|
36
|
+
}
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
clearConsole();
|
|
39
|
+
spinnies.remove("compile");
|
|
40
|
+
});
|
|
38
41
|
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
devServer = new WebpackDevServer({ ...devServerConfig, port }, rendererCompiler);
|
|
43
|
+
await devServer.start();
|
|
44
|
+
})
|
|
45
|
+
);
|
package/tasks/startElectron.js
CHANGED