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.
@@ -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 { 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);
@@ -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
@@ -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
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "rebuiltron",
3
- "version": "6.0.0",
3
+ "version": "6.0.1",
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
+ );