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.
@@ -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 { shouldUseSourceMap, isEnvDevelopment, isEnvProduction } = require("../helpers/environment");
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(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
- ...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`
@@ -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
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "rebuiltron",
3
- "version": "6.0.0",
3
+ "version": "6.0.2",
4
4
  "author": "Arkellys",
5
5
  "license": "MIT",
6
- "bin": "bin/index.js",
6
+ "bin": {
7
+ "rebuiltron": "bin/index.js"
8
+ },
7
9
  "scripts": {
8
10
  "lint": "eslint ."
9
11
  },
@@ -13,28 +13,33 @@ const spinnies = require("../helpers/spinnies");
13
13
  * @returns {Promise<WebpackDevServer>} Development server instance
14
14
  */
15
15
 
16
- module.exports = async (port) => {
17
- let isFirstRun = true;
18
- const rendererCompiler = webpack(webpackConfig.development.renderers);
16
+ module.exports = (port) => (
17
+ new Promise(async (resolve) => {
18
+ let devServer;
19
+ let isFirstRun = true;
19
20
 
20
- spinnies.add("devServer", { text: "Starting the development server" });
21
+ const rendererCompiler = webpack(webpackConfig.development.renderers);
21
22
 
22
- rendererCompiler.hooks.invalid.tap("invalid", () => {
23
- clearConsole();
24
- spinnies.add("compile", { text: "Compiling..." });
25
- });
23
+ spinnies.add("devServer", { text: "Starting the development server" });
26
24
 
27
- rendererCompiler.hooks.done.tap("done", () => {
28
- if (isFirstRun) return isFirstRun = false;
25
+ rendererCompiler.hooks.invalid.tap("invalid", () => {
26
+ clearConsole();
27
+ spinnies.add("compile", { text: "Compiling..." });
28
+ });
29
29
 
30
- clearConsole();
31
- spinnies.remove("compile");
32
- });
30
+ rendererCompiler.hooks.done.tap("done", () => {
31
+ if (isFirstRun) {
32
+ isFirstRun = false;
33
33
 
34
- const devServer = new WebpackDevServer({ ...devServerConfig, port }, rendererCompiler);
35
- await devServer.start();
34
+ spinnies.succeed("devServer", { text: `Development server running on port ${bold(port)}` });
35
+ return resolve(devServer);
36
+ }
36
37
 
37
- spinnies.succeed("devServer", { text: `Development server running on port ${bold(port)}` });
38
+ clearConsole();
39
+ spinnies.remove("compile");
40
+ });
38
41
 
39
- return devServer;
40
- };
42
+ devServer = new WebpackDevServer({ ...devServerConfig, port }, rendererCompiler);
43
+ await devServer.start();
44
+ })
45
+ );
@@ -8,6 +8,7 @@ const spinnies = require("../helpers/spinnies");
8
8
  /**
9
9
  * Starts Electron.
10
10
  * @param {number} port - Port on which the renderer is served
11
+ * @returns {Promise<void>} Promise resolving when compilation is successful
11
12
  */
12
13
 
13
14
  module.exports = (port) => (