UNPKG

fz-react-cli

Version:

A CLI tool for build modern web application and libraries

116 lines (100 loc) 3.5 kB
function ModuleStatsPlugin(options) { options = options || {}; this.options ={}; this.options.filename = options.filename || "moduleStats.js" } ModuleStatsPlugin.prototype = { constructor: ModuleStatsPlugin, apply: function (compiler) { var self = this; compiler.plugin("emit", function (compilation, callback) { var stats = compilation.getStats().toJson(); var modules = stats.modules; var moduleName = ""; var rModuleName = ""; var rReferencesArray = []; var rReferencedByArray = []; var data ={results:[]}; var moduleDetails ={}; var references = ""; var referencedBy = ""; var normalizedData=""; for(var i in modules) { moduleName = modules[i].name; if(moduleName.startsWith("./src") && !(((moduleName).indexOf("index.js"))>-1) && !(moduleName.endsWith("css"))) { rModuleName = moduleName.substring(moduleName.lastIndexOf("/")+1,moduleName.lastIndexOf(".")); if(rModuleName.endsWith("docs")) { rModuleName=rModuleName.substring(0,rModuleName.lastIndexOf(".")); } if(modules[i].reasons.length>0) { for(var l in modules[i].reasons) { referencedBy = modules[i].reasons[l].moduleName; if(!referencedBy.endsWith("index.js")) { var referencedby = referencedBy.substring(referencedBy.lastIndexOf("/")+1,referencedBy.lastIndexOf(".")); if(referencedby.endsWith("docs")) { rReferencedByArray.push(referencedby.substring(0,referencedby.lastIndexOf("."))) } else{ rReferencedByArray.push(referencedBy.substring(referencedBy.lastIndexOf("/")+1,referencedBy.lastIndexOf("."))); } } } } for (var module in modules) { if(modules[module].name.startsWith("./src")) { for(var reason in modules[module].reasons) { if(moduleName === modules[module].reasons[reason].moduleName && !(((modules[module].name).indexOf("css"))>-1)) { if(!((modules[module].name).endsWith("react.js")) && !(((modules[module].name).indexOf("react-dom"))>-1) && !(modules[module].name.endsWith(".png"))) { references = modules[module].name; rReferencesArray.push(references.substring(references.lastIndexOf("/")+1,references.lastIndexOf("."))); } } } } } rReferencesArray = rReferencesArray.filter(function( item, index, inputArray ) { return inputArray.indexOf(item) == index; }); moduleDetails = { "name":rModuleName, "references":rReferencesArray, "referencedby":rReferencedByArray }; var dre =""; data.results.push(moduleDetails); moduleDetails = {}; rReferencesArray=[]; rReferencedByArray=[]; referencedBy=""; references=""; data.results.forEach((mod)=>{ dre += "'"+mod.name+"':"+JSON.stringify(mod)+"," }); } } var dataResult = "{"+dre+"}"; var mResult = "var mdata = "+dataResult; compilation.assets[self.options.filename] = { source: function () { return mResult; }, size: function () { return mResult.length; } }; callback(); }); } }; module.exports = ModuleStatsPlugin;