1 | import { basename } from 'path';
|
2 | import { writeFile } from 'sander';
|
3 | import Bundle from './Bundle';
|
4 |
|
5 | let SOURCEMAPPING_URL = 'sourceMa';
|
6 | SOURCEMAPPING_URL += 'ppingURL';
|
7 |
|
8 | export function rollup ( options ) {
|
9 | if ( !options || !options.entry ) {
|
10 | throw new Error( 'You must supply options.entry to rollup' );
|
11 | }
|
12 |
|
13 | const bundle = new Bundle( options );
|
14 |
|
15 | return bundle.build().then( () => {
|
16 | return {
|
17 | generate: options => bundle.generate( options ),
|
18 | write: options => {
|
19 | if ( !options || !options.dest ) {
|
20 | throw new Error( 'You must supply options.dest to bundle.write' );
|
21 | }
|
22 |
|
23 | const dest = options.dest;
|
24 | let { code, map } = bundle.generate( options );
|
25 |
|
26 | let promises = [];
|
27 |
|
28 | if ( options.sourceMap ) {
|
29 | let url;
|
30 |
|
31 | if ( options.sourceMap === 'inline' ) {
|
32 | url = map.toUrl();
|
33 | } else {
|
34 | url = `${basename( dest )}.map`;
|
35 | promises.push( writeFile( dest + '.map', map.toString() ) );
|
36 | }
|
37 |
|
38 | code += `\n//# ${SOURCEMAPPING_URL}=${url}`;
|
39 | }
|
40 |
|
41 | promises.push( writeFile( dest, code ) );
|
42 | return Promise.all( promises );
|
43 | }
|
44 | };
|
45 | });
|
46 | }
|