diff --git a/lib/build/slim.js b/lib/build/slim.js index fe4e0944..9dc7ba0f 100644 --- a/lib/build/slim.js +++ b/lib/build/slim.js @@ -27,24 +27,26 @@ var write = require("../bundle/write_bundles").createWriteStream; var writeBundlesManifest = require("../stream/write_bundle_manifest"); var graph = require("../graph/make_graph_with_bundles").createBundleGraphStream; -module.exports = function(config, options) { +module.exports = function(cfg, opts) { + var config = cfg !== undefined ? cfg : {}; + var options = opts !== undefined ? opts : {}; + var slimDfd = makeDeferred(); - var buildOptions = assign({}, options); var supportedTargets = ["web", "node", "worker"]; // minification is on by default - assign(buildOptions, { - minify: isUndefined(buildOptions.minify) ? true : buildOptions.minify + assign(options, { + minify: isUndefined(options.minify) ? true : options.minify }); try { - options = assignDefaultOptions(config, buildOptions); + options = assignDefaultOptions(config, options); } catch (err) { return Promise.reject(err); } // fail early if an unknown target is passed in - var targets = arrify(buildOptions.target); + var targets = arrify(options.target); if (difference(targets, supportedTargets).length) { var unknown = difference(targets, supportedTargets); return Promise.reject( @@ -55,7 +57,7 @@ module.exports = function(config, options) { } var initialStream = pump( - graph(config, buildOptions), + graph(config, options), buildType("optimize"), filterGraph(), checkSlimSupport(), diff --git a/test/slim_build_test.js b/test/slim_build_test.js index 2a6c1754..b4490c83 100644 --- a/test/slim_build_test.js +++ b/test/slim_build_test.js @@ -378,6 +378,7 @@ describe("slim builds", function() { }); }); + it("rejects build promise if unknown target passed in", function(done) { var base = path.join(__dirname, "slim", "basics"); var config = { config: path.join(base, "stealconfig.js") }; @@ -392,6 +393,23 @@ describe("slim builds", function() { }); }); + it("config argument is optional", function(done) { + // passing options to force the rejection due to unknown target + optimize(undefined, { quiet: true, target: "electron" }) + .then( + function() { + done(new Error("build promise should not resolve")); + }, + function(error) { + assert( + /Cannot create slim build/.test(error.message), + "Incorrect error message: " + error.message + ); + done(); + }) + .catch(done); + }); + it("writes targets in folders matching the target name", function() { var base = path.join(__dirname, "slim", "basics"); var config = { config: path.join(base, "stealconfig.js") };