From 6014ec88957dc46cb5615f170b649cc9a475e9f8 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 2 Aug 2018 00:11:40 -0700 Subject: [PATCH] cli: allow array value for --ouput-library (#559) * cli: allow array value for --ouput-library. Fixes #557 * tests(bin): add test case for regression --- bin/config-yargs.js | 2 +- bin/convert-argv.js | 5 ++++- test/binCases/output/output-library-many/index.js | 1 + test/binCases/output/output-library-many/stdin.js | 12 ++++++++++++ test/binCases/output/output-library-many/test.opts | 5 +++++ 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 +++++ 8 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 test/binCases/output/output-library-many/index.js create mode 100644 test/binCases/output/output-library-many/stdin.js create mode 100644 test/binCases/output/output-library-many/test.opts 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/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..b523ad98d05 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 (!options.output.library) { + options.output.library = []; + } + options.output.library.push(value); }); ifArg("output-library-target", function(value) { diff --git a/test/binCases/output/output-library-many/index.js b/test/binCases/output/output-library-many/index.js new file mode 100644 index 00000000000..0d24e266fe2 --- /dev/null +++ b/test/binCases/output/output-library-many/index.js @@ -0,0 +1 @@ +module.exports = "index"; diff --git a/test/binCases/output/output-library-many/stdin.js b/test/binCases/output/output-library-many/stdin.js new file mode 100644 index 00000000000..df5425b6d06 --- /dev/null +++ b/test/binCases/output/output-library-many/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-many/bundle.js"), "utf-8"); + expect(output).toContain("window.key1=window.key1||{},window.key1.key2=function"); +}; diff --git a/test/binCases/output/output-library-many/test.opts b/test/binCases/output/output-library-many/test.opts new file mode 100644 index 00000000000..9dc11f5ca63 --- /dev/null +++ b/test/binCases/output/output-library-many/test.opts @@ -0,0 +1,5 @@ +./index.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