diff options
| author | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-04-04 14:53:04 +0530 |
|---|---|---|
| committer | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-04-04 14:53:04 +0530 |
| commit | 5f23f07d04073c06af530332c2d75b48d6c023a0 (patch) | |
| tree | 2c7359a2b33b95f92f3bba9a9074e6bf9137ac1d /config/webpack/plugins/create-rules-webpack-plugin.js | |
| parent | d178caee5c93ad9ed91dbd082b0f0b5a9b0507aa (diff) | |
| download | banglar-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.js | 43 |
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; |
