From cfde9954f201e158e547798801d466baed2695fc Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 10 Feb 2015 16:35:39 -0800 Subject: [PATCH] Add grunt task to print duplicate modules --- build/tasks/output-module-counts.coffee | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 build/tasks/output-module-counts.coffee diff --git a/build/tasks/output-module-counts.coffee b/build/tasks/output-module-counts.coffee new file mode 100644 index 000000000..4813cb336 --- /dev/null +++ b/build/tasks/output-module-counts.coffee @@ -0,0 +1,22 @@ +path = require 'path' + +module.exports = (grunt) -> + grunt.registerTask 'output-module-counts', 'Log modules where more than one copy exists in node_modules', -> + nodeModulesDir = path.resolve(__dirname, '..', '..', 'node_modules') + + modules = {} + grunt.file.recurse nodeModulesDir, (absolutePath, rootPath, relativePath, fileName) -> + return if fileName isnt 'package.json' + + {name} = grunt.file.readJSON(absolutePath) + modules[name] ?= 0 + modules[name]++ + + sortedNames = Object.keys(modules).sort (name1, name2) -> + diff = modules[name2] - modules[name1] + diff = name1.localeCompare(name2) if diff is 0 + diff + + sortedNames.forEach (name) -> + count = modules[name] + grunt.log.error "#{name}: #{count}" if count > 1