rebuiltron 6.0.0 → 6.0.1
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 +3 -52
- package/configurations/main.js +9 -0
- package/configurations/preloads.js +9 -0
- package/configurations/renderers.js +59 -1
- package/package.json +4 -2
- package/tasks/startDevServer.js +23 -18
package/configurations/base.js
CHANGED
|
@@ -1,22 +1,12 @@
|
|
|
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);
|
|
@@ -72,53 +62,14 @@ module.exports = {
|
|
|
72
62
|
comments: false
|
|
73
63
|
}
|
|
74
64
|
}
|
|
75
|
-
})
|
|
76
|
-
new CssMinimizerPlugin()
|
|
65
|
+
})
|
|
77
66
|
]
|
|
78
67
|
},
|
|
79
68
|
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
|
-
]
|
|
69
|
+
strictExportPresence: true
|
|
102
70
|
},
|
|
103
71
|
plugins: [
|
|
104
|
-
...emptyOr(isEnvProduction, [
|
|
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
72
|
...emptyOr(isEnvDevelopment, [
|
|
121
|
-
new ReactRefreshWebpackPlugin({ overlay: false }),
|
|
122
73
|
new CaseSensitivePathsPlugin() // Detects case errors in import paths
|
|
123
74
|
]),
|
|
124
75
|
new ModuleNotFoundPlugin(paths.appPath) // Gives some necessary context to module not found errors
|
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);
|
|
@@ -15,5 +16,13 @@ module.exports = {
|
|
|
15
16
|
output: {
|
|
16
17
|
...baseConfig.output,
|
|
17
18
|
filename: `${rebuiltronConfig.buildDirs.js}/[name].js`
|
|
19
|
+
},
|
|
20
|
+
module: {
|
|
21
|
+
...baseConfig.module,
|
|
22
|
+
rules: [
|
|
23
|
+
{
|
|
24
|
+
oneOf: javascriptLoaders
|
|
25
|
+
}
|
|
26
|
+
]
|
|
18
27
|
}
|
|
19
28
|
};
|
|
@@ -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);
|
|
@@ -17,5 +18,13 @@ module.exports = {
|
|
|
17
18
|
output: {
|
|
18
19
|
...baseConfig.output,
|
|
19
20
|
filename: `${rebuiltronConfig.buildDirs.js}/[name].js`
|
|
21
|
+
},
|
|
22
|
+
module: {
|
|
23
|
+
...baseConfig.module,
|
|
24
|
+
rules: [
|
|
25
|
+
{
|
|
26
|
+
oneOf: javascriptLoaders
|
|
27
|
+
}
|
|
28
|
+
]
|
|
20
29
|
}
|
|
21
30
|
};
|
|
@@ -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);
|
|
@@ -24,8 +32,58 @@ module.exports = {
|
|
|
24
32
|
chunkFilename: `${rebuiltronConfig.buildDirs.js}/${isEnvProduction ? "[name].[contenthash:8].chunk.js" : "[name].chunk.js"}`,
|
|
25
33
|
assetModuleFilename: `${rebuiltronConfig.buildDirs.media}/[name].[hash][ext]`
|
|
26
34
|
},
|
|
35
|
+
optimization: {
|
|
36
|
+
...baseConfig.optimization,
|
|
37
|
+
minimizer: [
|
|
38
|
+
...baseConfig.optimization.minimizer,
|
|
39
|
+
new CssMinimizerPlugin()
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
module: {
|
|
43
|
+
...baseConfig.module,
|
|
44
|
+
rules: [
|
|
45
|
+
// Handles `node_modules` packages that contain sourcemaps
|
|
46
|
+
...emptyOr(shouldUseSourceMap, [{
|
|
47
|
+
enforce: "pre",
|
|
48
|
+
exclude: /@babel(?:\/|\\{1,2})runtime/,
|
|
49
|
+
test: /\.(js|mjs|jsx|ts|tsx|css)$/,
|
|
50
|
+
loader: require.resolve("source-map-loader")
|
|
51
|
+
}]),
|
|
52
|
+
{
|
|
53
|
+
oneOf: [
|
|
54
|
+
...imageLoaders,
|
|
55
|
+
...javascriptLoaders,
|
|
56
|
+
...styleLoaders,
|
|
57
|
+
{
|
|
58
|
+
// Makes sure the assets get served by `WebpackDevServer`
|
|
59
|
+
exclude: [/^$/, /\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
|
|
60
|
+
type: "asset/resource"
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
},
|
|
27
66
|
plugins: [
|
|
28
67
|
...baseConfig.plugins,
|
|
68
|
+
...emptyOr(isEnvProduction, [
|
|
69
|
+
new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime-.+[.]js/]), // Injects scripts into HTML
|
|
70
|
+
new MiniCssExtractPlugin({
|
|
71
|
+
filename: `${rebuiltronConfig.buildDirs.css}/[name].[contenthash:8].css`,
|
|
72
|
+
chunkFilename: `${rebuiltronConfig.buildDirs.css}/[name].[contenthash:8].chunk.css`
|
|
73
|
+
}),
|
|
74
|
+
new CopyPlugin({
|
|
75
|
+
patterns: [{
|
|
76
|
+
from: paths.appPublic,
|
|
77
|
+
to: paths.appBuild,
|
|
78
|
+
globOptions: {
|
|
79
|
+
ignore: ["**/*.html"]
|
|
80
|
+
}
|
|
81
|
+
}]
|
|
82
|
+
})
|
|
83
|
+
]),
|
|
84
|
+
...emptyOr(isEnvDevelopment, [
|
|
85
|
+
new ReactRefreshWebpackPlugin({ overlay: false })
|
|
86
|
+
]),
|
|
29
87
|
...keys(renderers).map((renderer) => (
|
|
30
88
|
new HtmlWebpackPlugin({
|
|
31
89
|
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
|
+
);
|