UNPKG

1.95 kBJavaScriptView Raw
1// TODO: ES2015 maybe, baby?
2var path = require('path');
3
4var rollup = require('rollup');
5var babel = require('rollup-plugin-babel');
6var json = require('rollup-plugin-json');
7var localResolve = require('rollup-plugin-local-resolve');
8var camelCase = require('camel-case');
9var objectAssign = require('object-assign');
10
11var Promise = (typeof Promise === 'undefined') ? require('pinkie-promise') : Promise;
12
13module.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};