From a3f2d17596d8ceff8f4cbd7a66bab56b83b5557b Mon Sep 17 00:00:00 2001 From: Brian Donovan Date: Sun, 5 Jun 2016 14:37:12 -0700 Subject: [PATCH 1/3] Allow specifying multiple output targets. Closes #655. --- bin/runRollup.js | 10 +++++++++ src/rollup.js | 1 + test/cli/multiple-targets/_config.js | 4 ++++ test/cli/multiple-targets/_expected/cjs.js | 5 +++++ test/cli/multiple-targets/_expected/es6.js | 3 +++ test/cli/multiple-targets/main.js | 1 + test/cli/multiple-targets/rollup.config.js | 13 +++++++++++ test/test.js | 26 ++++++++++++++++++---- 8 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 test/cli/multiple-targets/_config.js create mode 100644 test/cli/multiple-targets/_expected/cjs.js create mode 100644 test/cli/multiple-targets/_expected/es6.js create mode 100644 test/cli/multiple-targets/main.js create mode 100644 test/cli/multiple-targets/rollup.config.js diff --git a/bin/runRollup.js b/bin/runRollup.js index 220c378..ea8ade9 100644 --- a/bin/runRollup.js +++ b/bin/runRollup.js @@ -143,6 +143,16 @@ function bundle ( options ) { return bundle.write( options ); } + if ( options.targets ) { + var result = null; + + options.targets.forEach( function ( target ) { + result = bundle.write(target); + }); + + return result; + } + if ( options.sourceMap && options.sourceMap !== 'inline' ) { handleError({ code: 'MISSING_OUTPUT_OPTION' }); } diff --git a/src/rollup.js b/src/rollup.js index 77a97bd..8a05ac4 100644 --- a/src/rollup.js +++ b/src/rollup.js @@ -27,6 +27,7 @@ const ALLOWED_KEYS = [ 'plugins', 'preferConst', 'sourceMap', + 'targets', 'treeshake', 'useStrict' ]; diff --git a/test/cli/multiple-targets/_config.js b/test/cli/multiple-targets/_config.js new file mode 100644 index 0000000..73d5d28 --- /dev/null +++ b/test/cli/multiple-targets/_config.js @@ -0,0 +1,4 @@ +module.exports = { + description: 'generates multiple output files when multiple targets are specified', + command: 'rollup -c' +}; diff --git a/test/cli/multiple-targets/_expected/cjs.js b/test/cli/multiple-targets/_expected/cjs.js new file mode 100644 index 0000000..98deb0c --- /dev/null +++ b/test/cli/multiple-targets/_expected/cjs.js @@ -0,0 +1,5 @@ +'use strict'; + +var main = 0; + +module.exports = main; diff --git a/test/cli/multiple-targets/_expected/es6.js b/test/cli/multiple-targets/_expected/es6.js new file mode 100644 index 0000000..d326592 --- /dev/null +++ b/test/cli/multiple-targets/_expected/es6.js @@ -0,0 +1,3 @@ +var main = 0; + +export default main; diff --git a/test/cli/multiple-targets/main.js b/test/cli/multiple-targets/main.js new file mode 100644 index 0000000..7f810d3 --- /dev/null +++ b/test/cli/multiple-targets/main.js @@ -0,0 +1 @@ +export default 0; diff --git a/test/cli/multiple-targets/rollup.config.js b/test/cli/multiple-targets/rollup.config.js new file mode 100644 index 0000000..db165db --- /dev/null +++ b/test/cli/multiple-targets/rollup.config.js @@ -0,0 +1,13 @@ +export default { + entry: 'main.js', + targets: [ + { + format: 'cjs', + dest: '_actual/cjs.js' + }, + { + format: 'es6', + dest: '_actual/es6.js' + } + ] +}; diff --git a/test/test.js b/test/test.js index 22239fe..d571f7f 100644 --- a/test/test.js +++ b/test/test.js @@ -76,7 +76,7 @@ describe( 'rollup', function () { return rollup.rollup({ entry: 'x', plUgins: [] }).then( function () { throw new Error( 'Missing expected error' ); }, function ( err ) { - assert.equal( err.message, 'Unexpected key \'plUgins\' found, expected one of: banner, dest, entry, exports, external, footer, format, globals, indent, intro, moduleId, moduleName, noConflict, onwarn, outro, plugins, preferConst, sourceMap, treeshake, useStrict' ); + assert.equal( err.message, 'Unexpected key \'plUgins\' found, expected one of: banner, dest, entry, exports, external, footer, format, globals, indent, intro, moduleId, moduleName, noConflict, onwarn, outro, plugins, preferConst, sourceMap, targets, treeshake, useStrict' ); }); }); }); @@ -353,9 +353,13 @@ describe( 'rollup', function () { PATH: path.resolve( __dirname, '../bin' ) + path.delimiter + process.env.PATH } }, function ( err, code, stderr ) { - if ( err || config.error ) { - config.error( err ); - return done(); + if ( err ) { + if ( config.error ) { + config.error( err ); + return done(); + } else { + throw err; + } } if ( stderr ) console.error( stderr ); @@ -409,6 +413,20 @@ describe( 'rollup', function () { } } + else if ( sander.existsSync( '_expected' ) && sander.statSync( '_expected' ).isDirectory() ) { + var error = null; + sander.readdirSync( '_expected' ).forEach( child => { + var expected = sander.readFileSync( path.join( '_expected', child ) ).toString(); + var actual = sander.readFileSync( path.join( '_actual', child ) ).toString(); + try { + assert.equal( normaliseOutput( actual ), normaliseOutput( expected ) ); + } catch ( err ) { + error = err; + } + }); + done( error ); + } + else { var expected = sander.readFileSync( '_expected.js' ).toString(); try { From fc648ea46c795c03e06875b99fb96b407a8a88ba Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Mon, 6 Jun 2016 22:45:20 -0400 Subject: [PATCH 2/3] remove es6-promise. closes #689 --- package.json | 1 - src/rollup.js | 1 - src/utils/first.js | 2 -- src/utils/fs.js | 1 - src/utils/promise.js | 2 -- src/utils/transform.js | 2 -- 6 files changed, 9 deletions(-) diff --git a/package.json b/package.json index cb726fa..ff96caf 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "buble": "^0.6.4", "codecov.io": "^0.1.6", "console-group": "^0.2.0", - "es6-promise": "^3.0.2", "eslint": "^2.9.0", "estree-walker": "^0.2.0", "istanbul": "^0.4.0", diff --git a/src/rollup.js b/src/rollup.js index 77a97bd..8efd22d 100644 --- a/src/rollup.js +++ b/src/rollup.js @@ -1,4 +1,3 @@ -import Promise from 'es6-promise/lib/es6-promise/promise.js'; import { basename } from './utils/path.js'; import { writeFile } from './utils/fs.js'; import { keys } from './utils/object.js'; diff --git a/src/utils/first.js b/src/utils/first.js index 21d6fe3..7246246 100644 --- a/src/utils/first.js +++ b/src/utils/first.js @@ -1,5 +1,3 @@ -import Promise from 'es6-promise/lib/es6-promise/promise.js'; - // Return the first non-falsy result from an array of // maybe-sync, maybe-promise-returning functions export default function first ( candidates ) { diff --git a/src/utils/fs.js b/src/utils/fs.js index d153099..8a0e3e7 100644 --- a/src/utils/fs.js +++ b/src/utils/fs.js @@ -1,4 +1,3 @@ -import Promise from 'es6-promise/lib/es6-promise/promise.js'; import * as fs from 'fs'; import { dirname } from './path.js'; diff --git a/src/utils/promise.js b/src/utils/promise.js index 1730de8..d18a22d 100644 --- a/src/utils/promise.js +++ b/src/utils/promise.js @@ -1,5 +1,3 @@ -import Promise from 'es6-promise/lib/es6-promise/promise.js'; - export function mapSequence ( array, fn ) { let results = []; let promise = Promise.resolve(); diff --git a/src/utils/transform.js b/src/utils/transform.js index b401370..dfd4d95 100644 --- a/src/utils/transform.js +++ b/src/utils/transform.js @@ -1,5 +1,3 @@ -import Promise from 'es6-promise/lib/es6-promise/promise.js'; - export default function transform ( source, id, transformers ) { let sourceMapChain = []; From e21d8a33eed6e4bfc9ce98d87042a01e8b1b06f2 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Mon, 6 Jun 2016 23:30:18 -0400 Subject: [PATCH 3/3] oops --- test/function/transformer-async/_config.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/function/transformer-async/_config.js b/test/function/transformer-async/_config.js index 960eb69..cd9afd0 100644 --- a/test/function/transformer-async/_config.js +++ b/test/function/transformer-async/_config.js @@ -1,5 +1,3 @@ -var Promise = require( 'es6-promise' ).Promise; - module.exports = { description: 'transformers can be asynchronous', options: {