From 032b151c98b2ffee08c67ff86c7700307dab94bd Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Tue, 31 Jul 2018 22:00:31 -0700 Subject: [PATCH 1/2] allow array value for --ouput-library. Fixes #557 --- bin/config-yargs.js | 2 +- bin/convert-argv.js | 5 ++++- test/binCases/output/output-library/index.js | 1 + test/binCases/output/output-library/stdin.js | 12 ++++++++++++ test/binCases/output/output-library/test.opts | 5 +++++ 5 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 test/binCases/output/output-library/index.js create mode 100644 test/binCases/output/output-library/stdin.js create mode 100644 test/binCases/output/output-library/test.opts diff --git a/bin/config-yargs.js b/bin/config-yargs.js index a02c774d0d7..5f112db0dfb 100644 --- a/bin/config-yargs.js +++ b/bin/config-yargs.js @@ -137,7 +137,7 @@ module.exports = function(yargs) { group: OUTPUT_GROUP }, "output-library": { - type: "string", + type: "array", describe: "Expose the exports of the entry point as library", group: OUTPUT_GROUP, requiresArg: true diff --git a/bin/convert-argv.js b/bin/convert-argv.js index 82fe87a410e..6ecf66b1bc6 100644 --- a/bin/convert-argv.js +++ b/bin/convert-argv.js @@ -441,7 +441,10 @@ module.exports = function(...args) { ifArg("output-library", function(value) { ensureObject(options, "output"); - options.output.library = value; + if (typeof options.output.library === "undefined") { + options.output.library = []; + } + options.output.library.push(value); }); ifArg("output-library-target", function(value) { diff --git a/test/binCases/output/output-library/index.js b/test/binCases/output/output-library/index.js new file mode 100644 index 00000000000..0d24e266fe2 --- /dev/null +++ b/test/binCases/output/output-library/index.js @@ -0,0 +1 @@ +module.exports = "index"; diff --git a/test/binCases/output/output-library/stdin.js b/test/binCases/output/output-library/stdin.js new file mode 100644 index 00000000000..04f771b636f --- /dev/null +++ b/test/binCases/output/output-library/stdin.js @@ -0,0 +1,12 @@ +"use strict"; + +module.exports = function testAssertions(code, stdout, stderr) { + expect(code).toBe(0); + expect(stdout).toEqual(expect.anything()); + expect(stdout[5]).toContain("bundle.js"); + expect(stdout[7]).toMatch(/index\.js.*\{0\}/); + expect(stderr).toHaveLength(0); + + const output = require("fs").readFileSync(require("path").join(__dirname, "../../../js/bin/output/output-library/bundle.js"), "utf-8"); + expect(output).toContain("window.key1=window.key1||{},window.key1.key2=function"); +}; diff --git a/test/binCases/output/output-library/test.opts b/test/binCases/output/output-library/test.opts new file mode 100644 index 00000000000..c71040ec24c --- /dev/null +++ b/test/binCases/output/output-library/test.opts @@ -0,0 +1,5 @@ +./index.js +-o ../../../js/bin/output/output-library/bundle.js +--target async-node +--output-library-target window +--output-library key1 --output-library key2 From 9ee38f8849065a1c9095e57a1b7cfd791ce4ffb9 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Wed, 1 Aug 2018 19:43:53 -0700 Subject: [PATCH 2/2] add test case for regression --- bin/convert-argv.js | 2 +- .../{output-library => output-library-many}/index.js | 0 .../{output-library => output-library-many}/stdin.js | 2 +- .../test.opts | 2 +- test/binCases/output/output-library-single/index.js | 1 + test/binCases/output/output-library-single/stdin.js | 12 ++++++++++++ test/binCases/output/output-library-single/test.opts | 5 +++++ 7 files changed, 21 insertions(+), 3 deletions(-) rename test/binCases/output/{output-library => output-library-many}/index.js (100%) rename test/binCases/output/{output-library => output-library-many}/stdin.js (84%) rename test/binCases/output/{output-library => output-library-many}/test.opts (65%) create mode 100644 test/binCases/output/output-library-single/index.js create mode 100644 test/binCases/output/output-library-single/stdin.js create mode 100644 test/binCases/output/output-library-single/test.opts diff --git a/bin/convert-argv.js b/bin/convert-argv.js index 6ecf66b1bc6..b523ad98d05 100644 --- a/bin/convert-argv.js +++ b/bin/convert-argv.js @@ -441,7 +441,7 @@ module.exports = function(...args) { ifArg("output-library", function(value) { ensureObject(options, "output"); - if (typeof options.output.library === "undefined") { + if (!options.output.library) { options.output.library = []; } options.output.library.push(value); diff --git a/test/binCases/output/output-library/index.js b/test/binCases/output/output-library-many/index.js similarity index 100% rename from test/binCases/output/output-library/index.js rename to test/binCases/output/output-library-many/index.js diff --git a/test/binCases/output/output-library/stdin.js b/test/binCases/output/output-library-many/stdin.js similarity index 84% rename from test/binCases/output/output-library/stdin.js rename to test/binCases/output/output-library-many/stdin.js index 04f771b636f..df5425b6d06 100644 --- a/test/binCases/output/output-library/stdin.js +++ b/test/binCases/output/output-library-many/stdin.js @@ -7,6 +7,6 @@ module.exports = function testAssertions(code, stdout, stderr) { expect(stdout[7]).toMatch(/index\.js.*\{0\}/); expect(stderr).toHaveLength(0); - const output = require("fs").readFileSync(require("path").join(__dirname, "../../../js/bin/output/output-library/bundle.js"), "utf-8"); + const output = require("fs").readFileSync(require("path").join(__dirname, "../../../js/bin/output/output-library-many/bundle.js"), "utf-8"); expect(output).toContain("window.key1=window.key1||{},window.key1.key2=function"); }; diff --git a/test/binCases/output/output-library/test.opts b/test/binCases/output/output-library-many/test.opts similarity index 65% rename from test/binCases/output/output-library/test.opts rename to test/binCases/output/output-library-many/test.opts index c71040ec24c..9dc11f5ca63 100644 --- a/test/binCases/output/output-library/test.opts +++ b/test/binCases/output/output-library-many/test.opts @@ -1,5 +1,5 @@ ./index.js --o ../../../js/bin/output/output-library/bundle.js +-o ../../../js/bin/output/output-library-many/bundle.js --target async-node --output-library-target window --output-library key1 --output-library key2 diff --git a/test/binCases/output/output-library-single/index.js b/test/binCases/output/output-library-single/index.js new file mode 100644 index 00000000000..0d24e266fe2 --- /dev/null +++ b/test/binCases/output/output-library-single/index.js @@ -0,0 +1 @@ +module.exports = "index"; diff --git a/test/binCases/output/output-library-single/stdin.js b/test/binCases/output/output-library-single/stdin.js new file mode 100644 index 00000000000..1c3a14167fc --- /dev/null +++ b/test/binCases/output/output-library-single/stdin.js @@ -0,0 +1,12 @@ +"use strict"; + +module.exports = function testAssertions(code, stdout, stderr) { + expect(code).toBe(0); + expect(stdout).toEqual(expect.anything()); + expect(stdout[5]).toContain("bundle.js"); + expect(stdout[7]).toMatch(/index\.js.*\{0\}/); + expect(stderr).toHaveLength(0); + + const output = require("fs").readFileSync(require("path").join(__dirname, "../../../js/bin/output/output-library-single/bundle.js"), "utf-8"); + expect(output).toContain("window.key1=function"); +}; diff --git a/test/binCases/output/output-library-single/test.opts b/test/binCases/output/output-library-single/test.opts new file mode 100644 index 00000000000..df1f1af62a7 --- /dev/null +++ b/test/binCases/output/output-library-single/test.opts @@ -0,0 +1,5 @@ +./index.js +-o ../../../js/bin/output/output-library-single/bundle.js +--target async-node +--output-library-target window +--output-library key1