From 7f5087075ccb7263237b0558f97a942f6a6352d7 Mon Sep 17 00:00:00 2001 From: Daniel Freedman Date: Mon, 21 Oct 2013 16:59:58 -0700 Subject: [PATCH] Add common grunt tasks and utils - readManifest: process recursive build.json's - grunt task copy-sourcemap: copy the sourcesContent from sourceMapA to sourceMapB --- loader/readManifest.js | 26 ++++++++++++++++++++++++++ tasks/copy-sourcemap.js | 14 ++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 loader/readManifest.js create mode 100644 tasks/copy-sourcemap.js diff --git a/loader/readManifest.js b/loader/readManifest.js new file mode 100644 index 000000000..98ace1fc7 --- /dev/null +++ b/loader/readManifest.js @@ -0,0 +1,26 @@ +// recursive module loader +var fs = require('fs'); +var path = require('path'); + +function readJSON(filename) { + var blob = fs.readFileSync(filename, 'utf8'); + return JSON.parse(blob); +} + +function readManifest(filename, modules) { + modules = modules || []; + var lines = readJSON(filename); + var dir = path.dirname(filename); + lines.forEach(function(line) { + var fullpath = path.join(dir, line); + if (line.slice(-5) == '.json') { + // recurse + readManifest(fullpath, modules); + } else { + modules.push(fullpath); + } + }); + return modules; +} + +module.exports = readManifest; diff --git a/tasks/copy-sourcemap.js b/tasks/copy-sourcemap.js new file mode 100644 index 000000000..aa7b25b41 --- /dev/null +++ b/tasks/copy-sourcemap.js @@ -0,0 +1,14 @@ +module.exports = function(grunt) { + grunt.registerTask('sourcemap_copy', 'Copy sourcesContent between sourcemaps', function(source, dest) { + var sourceMap = grunt.file.readJSON(source); + var destMap = grunt.file.readJSON(dest); + destMap.sourcesContent = []; + var ssources = sourceMap.sources; + // uglify may reorder sources, make sure sourcesContent matches new order + destMap.sources.forEach(function(source) { + var j = ssources.indexOf(source); + destMap.sourcesContent.push(sourceMap.sourcesContent[j]); + }); + grunt.file.write(dest, JSON.stringify(destMap)); + }); +};