UNPKG

2.07 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 if (format === 'iife') {
53 config.dest += '.iife';
54 config.moduleName = rollupOptions.moduleName;
55 }
56
57 config.dest += '.js';
58
59 return rollup.rollup(config).then(function rollupBundle(bundle) {
60 var endTime = 0;
61
62 bundle.write(config);
63
64 endTime = Date.now();
65
66 return {
67 format: format,
68 name: rollupOptions.name,
69 startTime: startTime,
70 endTime: endTime
71 };
72 });
73 });
74
75 return Promise.all(builds);
76};