1 |
|
2 | var path = require('path');
|
3 |
|
4 | var rollup = require('rollup');
|
5 | var babel = require('rollup-plugin-babel');
|
6 | var json = require('rollup-plugin-json');
|
7 | var localResolve = require('rollup-plugin-local-resolve');
|
8 | var camelCase = require('camel-case');
|
9 | var objectAssign = require('object-assign');
|
10 |
|
11 | var Promise = (typeof Promise === 'undefined') ? require('pinkie-promise') : Promise;
|
12 |
|
13 | module.exports = function rollupLib(options) {
|
14 | var rollupOptions = objectAssign({}, options);
|
15 |
|
16 | var baseConfig = {};
|
17 | var builds = [];
|
18 |
|
19 | rollupOptions.name = rollupOptions.name || 'mylibrary';
|
20 | rollupOptions.moduleName = rollupOptions.moduleName || camelCase(rollupOptions.name);
|
21 | rollupOptions.dest = rollupOptions.dest || 'dist';
|
22 | rollupOptions.entry = rollupOptions.entry || 'index.js';
|
23 | rollupOptions.format = rollupOptions.format || ['es6', 'cjs', 'umd'];
|
24 |
|
25 | if (rollupOptions.format.length === 0) {
|
26 | rollupOptions.format = ['es6', 'cjs', 'umd'];
|
27 | }
|
28 |
|
29 | rollupOptions.plugins = rollupOptions.plugins || [babel(), json(), localResolve()];
|
30 |
|
31 | baseConfig = {
|
32 | entry: rollupOptions.entry,
|
33 | plugins: rollupOptions.plugins
|
34 | };
|
35 |
|
36 | builds = rollupOptions.format.map(function buildFormat(format) {
|
37 | var startTime = Date.now();
|
38 | var config = objectAssign({}, baseConfig);
|
39 |
|
40 | config.format = format;
|
41 | config.dest = path.join(rollupOptions.dest, rollupOptions.name);
|
42 |
|
43 | if (format === 'es6') {
|
44 | config.dest += '.es2015';
|
45 | }
|
46 |
|
47 | if (format === 'umd') {
|
48 | config.dest += '.umd';
|
49 | config.moduleName = rollupOptions.moduleName;
|
50 | }
|
51 |
|
52 | config.dest += '.js';
|
53 |
|
54 | return rollup.rollup(config).then(function rollupBundle(bundle) {
|
55 | var endTime = 0;
|
56 |
|
57 | bundle.write(config);
|
58 |
|
59 | endTime = Date.now();
|
60 |
|
61 | return {
|
62 | format: format,
|
63 | name: rollupOptions.name,
|
64 | startTime: startTime,
|
65 | endTime: endTime
|
66 | };
|
67 | });
|
68 | });
|
69 |
|
70 | return Promise.all(builds);
|
71 | };
|