diff --git a/package.json b/package.json index 524f5462..644b0973 100644 --- a/package.json +++ b/package.json @@ -16,10 +16,12 @@ }, "dependencies": { "async" : "~0.2.6", - "source-map" : "~0.1.33", "optimist" : "~0.3.5", "uglify-to-browserify": "~1.0.0" }, + "optionalDependencies": { + "source-map" : "~0.1.33" + }, "browserify": { "transform": [ "uglify-to-browserify" ] }, diff --git a/tools/node.js b/tools/node.js index 084998da..a5e72f65 100644 --- a/tools/node.js +++ b/tools/node.js @@ -2,11 +2,16 @@ var path = require("path"); var fs = require("fs"); var vm = require("vm"); var sys = require("util"); +var sourceMap; +try { + sourceMap = require("source-map"); +} catch(e) { +} var UglifyJS = vm.createContext({ sys : sys, console : console, - MOZ_SourceMap : require("source-map") + MOZ_SourceMap : sourceMap }); function load_global(file) { @@ -107,17 +112,21 @@ exports.minify = function(files, options) { inMap = fs.readFileSync(options.inSourceMap, "utf8"); } if (options.outSourceMap) { - output.source_map = UglifyJS.SourceMap({ - file: options.outSourceMap, - orig: inMap, - root: options.sourceRoot - }); - if (options.sourceMapIncludeSources) { - for (var file in sourcesContent) { - if (sourcesContent.hasOwnProperty(file)) { - output.source_map.get().setSourceContent(file, sourcesContent[file]); + if (sourceMap) { + output.source_map = UglifyJS.SourceMap({ + file: options.outSourceMap, + orig: inMap, + root: options.sourceRoot + }); + if (options.sourceMapIncludeSources) { + for (var file in sourcesContent) { + if (sourcesContent.hasOwnProperty(file)) { + output.source_map.get().setSourceContent(file, sourcesContent[file]); + } } } + } else { + console.error("source-map module is missing and needed by outSourceMap option"); } }