aboutsummaryrefslogtreecommitdiffstats
path: root/config/webpack/plugins/create-rules-webpack-plugin.js
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2023-04-04 14:53:04 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2023-04-04 14:53:04 +0530
commit5f23f07d04073c06af530332c2d75b48d6c023a0 (patch)
tree2c7359a2b33b95f92f3bba9a9074e6bf9137ac1d /config/webpack/plugins/create-rules-webpack-plugin.js
parentd178caee5c93ad9ed91dbd082b0f0b5a9b0507aa (diff)
downloadbanglar-bhumi-utils-5f23f07d04073c06af530332c2d75b48d6c023a0.tar.gz
banglar-bhumi-utils-5f23f07d04073c06af530332c2d75b48d6c023a0.zip
Using different global variables for shared modules.
Diffstat (limited to 'config/webpack/plugins/create-rules-webpack-plugin.js')
-rw-r--r--config/webpack/plugins/create-rules-webpack-plugin.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/config/webpack/plugins/create-rules-webpack-plugin.js b/config/webpack/plugins/create-rules-webpack-plugin.js
new file mode 100644
index 0000000..4a02e2f
--- /dev/null
+++ b/config/webpack/plugins/create-rules-webpack-plugin.js
@@ -0,0 +1,43 @@
+const path = require("path");
+const fs = require("fs");
+const { sources } = require("webpack");
+
+class CreateRulesPlugin {
+ apply(compiler) {
+ compiler.hooks.compilation.tap("CreateRulesPlugin", compilation => {
+ compilation.hooks.processAssets.tap(
+ {
+ name: "CreateRulesPlugin",
+ stage: compiler.webpack.Compilation.PROCESS_ASSETS_ADDITIONAL,
+ additionalAssets: true
+ },
+ assets => {
+ const ruleFileNames = fs.readdirSync(path.resolve(SOURCE_DIR, "rules"));
+ const rules = [];
+ let ruleId = 1;
+
+ for (const ruleFileName of ruleFileNames) {
+ const rule = require(path.resolve(SOURCE_DIR, "rules", ruleFileName));
+
+ if (rule instanceof Array) {
+ for (const rule of rule) {
+ rule.id = ruleId++;
+ rules.push(rule);
+ }
+ } else {
+ rule.id = ruleId++;
+ rules.push(rule);
+ }
+ }
+
+ compilation.emitAsset(
+ "rules.json",
+ new sources.RawSource(JSON.stringify(rules, undefined, process.env.NODE_ENV === "production" ? undefined : "\t"))
+ );
+ }
+ );
+ });
+ }
+}
+
+module.exports = CreateRulesPlugin;