diff --git a/cli/run/build.ts b/cli/run/build.ts index ec2e5abe104..a744bec485e 100644 --- a/cli/run/build.ts +++ b/cli/run/build.ts @@ -66,9 +66,10 @@ export default function build( }); } - return Promise.all(outputOptions.map(output => bundle.write(output) as Promise)).then( - () => bundle - ); + return outputOptions.reduce( + (prev, output) => prev.then(() => bundle.write(output) as Promise), + Promise.resolve() + ).then(() => bundle) }) .then((bundle: RollupBuild | null) => { if (!silent) { diff --git a/test/cli/samples/emit-file-multiple-dirs/.tern-port b/test/cli/samples/emit-file-multiple-dirs/.tern-port new file mode 100644 index 00000000000..ec6dc4695bc --- /dev/null +++ b/test/cli/samples/emit-file-multiple-dirs/.tern-port @@ -0,0 +1 @@ +46665 \ No newline at end of file diff --git a/test/cli/samples/emit-file-multiple-dirs/_config.js b/test/cli/samples/emit-file-multiple-dirs/_config.js new file mode 100644 index 00000000000..34c81bf123b --- /dev/null +++ b/test/cli/samples/emit-file-multiple-dirs/_config.js @@ -0,0 +1,4 @@ +module.exports = { + description: 'writes files emitted by plugins in different output dirs', + command: 'rollup -c' +}; diff --git a/test/cli/samples/emit-file-multiple-dirs/_expected/dist1/main.js b/test/cli/samples/emit-file-multiple-dirs/_expected/dist1/main.js new file mode 100644 index 00000000000..9a6286fb5f8 --- /dev/null +++ b/test/cli/samples/emit-file-multiple-dirs/_expected/dist1/main.js @@ -0,0 +1,3 @@ +'use strict'; + +assert.equal( ANSWER, 42 ); diff --git a/test/cli/samples/emit-file-multiple-dirs/_expected/dist1/myfile b/test/cli/samples/emit-file-multiple-dirs/_expected/dist1/myfile new file mode 100644 index 00000000000..f2ba8f84ab5 --- /dev/null +++ b/test/cli/samples/emit-file-multiple-dirs/_expected/dist1/myfile @@ -0,0 +1 @@ +abc \ No newline at end of file diff --git a/test/cli/samples/emit-file-multiple-dirs/_expected/dist2/main.js b/test/cli/samples/emit-file-multiple-dirs/_expected/dist2/main.js new file mode 100644 index 00000000000..df16c1b06b9 --- /dev/null +++ b/test/cli/samples/emit-file-multiple-dirs/_expected/dist2/main.js @@ -0,0 +1 @@ +assert.equal( ANSWER, 42 ); diff --git a/test/cli/samples/emit-file-multiple-dirs/_expected/dist2/myfile b/test/cli/samples/emit-file-multiple-dirs/_expected/dist2/myfile new file mode 100644 index 00000000000..f2ba8f84ab5 --- /dev/null +++ b/test/cli/samples/emit-file-multiple-dirs/_expected/dist2/myfile @@ -0,0 +1 @@ +abc \ No newline at end of file diff --git a/test/cli/samples/emit-file-multiple-dirs/main.js b/test/cli/samples/emit-file-multiple-dirs/main.js new file mode 100644 index 00000000000..df16c1b06b9 --- /dev/null +++ b/test/cli/samples/emit-file-multiple-dirs/main.js @@ -0,0 +1 @@ +assert.equal( ANSWER, 42 ); diff --git a/test/cli/samples/emit-file-multiple-dirs/rollup.config.js b/test/cli/samples/emit-file-multiple-dirs/rollup.config.js new file mode 100644 index 00000000000..5131be2d2f9 --- /dev/null +++ b/test/cli/samples/emit-file-multiple-dirs/rollup.config.js @@ -0,0 +1,18 @@ +export default { + input: "main.js", + output: [ + { + dir: "_actual/dist1", + format: "cjs" + }, + { + dir: "_actual/dist2", + format: "esm" + } + ], + plugins: [{ + generateBundle() { + this.emitFile({type: "asset", fileName: "myfile", source: "abc"}) + } + }] +}