added `exclude` option to stats

added `--display-exclude` and `--display-modules`
exclude common package manager folders by default
fixes #473
This commit is contained in:
Tobias Koppers 2014-09-15 11:46:33 +02:00
parent 1a10838a61
commit 992231a1c8
2 changed files with 39 additions and 12 deletions

View File

@ -34,6 +34,10 @@ optimist
.boolean("hide-modules").describe("hide-modules") .boolean("hide-modules").describe("hide-modules")
.string("display-exclude").describe("display-exclude")
.boolean("display-modules").describe("display-modules")
.boolean("display-chunks").describe("display-chunks") .boolean("display-chunks").describe("display-chunks")
.boolean("display-error-details").describe("display-error-details") .boolean("display-error-details").describe("display-error-details")
@ -89,6 +93,10 @@ ifArg("sort-assets-by", function(value) {
outputOptions.assetsSort = value; outputOptions.assetsSort = value;
}); });
ifArg("display-exclude", function(value) {
outputOptions.exclude = value;
});
if(!outputOptions.json) { if(!outputOptions.json) {
ifArg("display-chunks", function(bool) { ifArg("display-chunks", function(bool) {
outputOptions.modules = !bool; outputOptions.modules = !bool;
@ -116,6 +124,9 @@ if(!outputOptions.json) {
if(bool) if(bool)
outputOptions.cachedAssets = true; outputOptions.cachedAssets = true;
}); });
if(!outputOptions.exclude && !argv["display-modules"])
outputOptions.exclude = ["node_modules", "bower_components", "jam", "components"];
} else { } else {
outputOptions.chunks = true; outputOptions.chunks = true;
outputOptions.modules = true; outputOptions.modules = true;

View File

@ -37,9 +37,25 @@ Stats.prototype.toJson = function toJson(options, forToString) {
var showChildren = d(options.children, true); var showChildren = d(options.children, true);
var showSource = d(options.source, !forToString); var showSource = d(options.source, !forToString);
var showErrorDetails = d(options.errorDetails, !forToString); var showErrorDetails = d(options.errorDetails, !forToString);
var excludeModules = [].concat(d(options.exclude, [])).map(function(str) {
if(typeof str !== "string") return str;
return new RegExp("[\\\\/]" + str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + "([\\\\/]|$|!|\\?)");
});
var sortModules = d(options.modulesSort, "id"); var sortModules = d(options.modulesSort, "id");
var sortChunks = d(options.chunksSort, "id"); var sortChunks = d(options.chunksSort, "id");
var sortAssets = d(options.assetsSort, ""); var sortAssets = d(options.assetsSort, "");
function moduleFilter(module) {
if(!showCachedModules && !module.built) {
return false;
}
if(excludeModules.length === 0)
return true;
var ident = module.identifier();
return !excludeModules.some(function(regExp) {
return regExp.test(ident);
});
}
function sortByField(field) { function sortByField(field) {
if(!field) return function() { return 0; } if(!field) return function() { return 0; }
@ -184,12 +200,8 @@ Stats.prototype.toJson = function toJson(options, forToString) {
}) })
}; };
if(showChunkModules) { if(showChunkModules) {
obj.modules = chunk.modules.map(fnModule); obj.modules = chunk.modules.filter(moduleFilter).map(fnModule);
if(!showCachedModules) { obj.filteredModules = chunk.modules.length - obj.modules.length;
obj.modules = obj.modules.filter(function(m) {
return m.built;
});
}
obj.modules.sort(sortByField(sortModules)); obj.modules.sort(sortByField(sortModules));
} }
if(showChunkOrigins) { if(showChunkOrigins) {
@ -211,12 +223,8 @@ Stats.prototype.toJson = function toJson(options, forToString) {
obj.chunks.sort(sortByField(sortChunks)); obj.chunks.sort(sortByField(sortChunks));
} }
if(showModules) { if(showModules) {
obj.modules = compilation.modules.map(fnModule); obj.modules = compilation.modules.filter(moduleFilter).map(fnModule);
if(!showCachedModules) { obj.filteredModules = compilation.modules.length - obj.modules.length;
obj.modules = obj.modules.filter(function(m) {
return m.built;
});
}
obj.modules.sort(sortByField(sortModules)); obj.modules.sort(sortByField(sortModules));
} }
if(showChildren) { if(showChildren) {
@ -523,6 +531,10 @@ Stats.jsonToString = function jsonToString(obj, useColors) {
} }
processProfile(module); processProfile(module);
}); });
if(chunk.filteredModules > 0) {
normal(" + " + chunk.filteredModules + " hidden modules");
newline();
}
} }
}); });
} }
@ -557,6 +569,10 @@ Stats.jsonToString = function jsonToString(obj, useColors) {
} }
processProfile(module); processProfile(module);
}); });
if(obj.filteredModules > 0) {
normal(" + " + obj.filteredModules + " hidden modules");
newline();
}
} }
if(obj.warnings) { if(obj.warnings) {
obj.warnings.forEach(function(warning) { obj.warnings.forEach(function(warning) {