Browse Source

ass async onwrite hook

semi-dynamic-namespace-imports
Rich Harris 8 years ago
parent
commit
2a8bc9569e
  1. 9
      src/rollup.js
  2. 39
      test/test.js

9
src/rollup.js

@ -1,6 +1,7 @@
import { basename } from './utils/path.js';
import { writeFile } from './utils/fs.js';
import { assign, keys } from './utils/object.js';
import { mapSequence } from './utils/promise.js';
import validateKeys from './utils/validateKeys.js';
import SOURCEMAPPING_URL from './utils/sourceMappingURL.js';
import Bundle from './Bundle.js';
@ -96,7 +97,13 @@ export function rollup ( options ) {
}
promises.push( writeFile( dest, code ) );
return Promise.all( promises );
return Promise.all( promises ).then( () => {
return mapSequence( bundle.plugins.filter( plugin => plugin.onwrite ), plugin => {
return Promise.resolve( plugin.onwrite( assign({
bundle: result
}, options )));
});
});
}
};

39
test/test.js

@ -574,5 +574,44 @@ describe( 'rollup', function () {
]);
});
});
it( 'calls onwrite hooks in sequence', () => {
var result = [];
var dest = path.join( __dirname, 'tmp/bundle.js' );
return rollup.rollup({
entry: 'entry',
plugins: [
loader({ entry: `alert('hello')` }),
{
onwrite ( info ) {
return new Promise( ( fulfil ) => {
result.push({ a: info.dest, format: info.format });
fulfil();
});
}
},
{
onwrite ( info ) {
result.push({ b: info.dest, format: info.format });
}
}
]
}).then( bundle => {
return bundle.write({
dest,
format: 'cjs'
});
}).then( () => {
assert.deepEqual( result, [
{ a: dest, format: 'cjs' },
{ b: dest, format: 'cjs' }
]);
return sander.unlink( dest );
});
});
});
});

Loading…
Cancel
Save