diff --git a/src/rollup.js b/src/rollup.js index 1b4110e..e3a91b2 100644 --- a/src/rollup.js +++ b/src/rollup.js @@ -60,7 +60,7 @@ export function rollup ( options ) { if ( plugin.ongenerate ) { plugin.ongenerate( assign({ bundle: result - }, options )); + }, options ), rendered); } }); @@ -79,7 +79,8 @@ export function rollup ( options ) { } const dest = options.dest; - let { code, map } = generate( options ); + let output = generate( options ); + let { code, map } = output; let promises = []; @@ -101,7 +102,7 @@ export function rollup ( options ) { return mapSequence( bundle.plugins.filter( plugin => plugin.onwrite ), plugin => { return Promise.resolve( plugin.onwrite( assign({ bundle: result - }, options ))); + }, options ), output)); }); }); } diff --git a/test/test.js b/test/test.js index 8996b27..4f2bce1 100644 --- a/test/test.js +++ b/test/test.js @@ -550,6 +550,32 @@ describe( 'rollup', function () { }); describe( 'hooks', () => { + it( 'passes bundle & output object to ongenerate & onwrite hooks', () => { + var dest = path.join( __dirname, 'tmp/bundle.js' ); + + return rollup.rollup({ + entry: 'entry', + plugins: [ + loader({ entry: `alert('hello')` }), + { + ongenerate ( bundle, out ) { + out.ongenerate = true; + }, + + onwrite (bundle, out ) { + assert.equal(out.ongenerate, true); + } + } + ] + }).then( bundle => { + return bundle.write({ + dest + }); + }).then( () => { + return sander.unlink( dest ); + }); + }); + it( 'calls ongenerate hooks in sequence', () => { var result = [];