UNPKG

2.36 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3var fs = require('fs');
4
5var program = require('commander');
6
7var path = require('path');
8var pkg = require('../package.json');
9var rollupBabelLibBundler = require('../lib');
10
11var libPkg = null;
12var libName = '';
13var moduleName = '';
14var dest = '';
15var format = '';
16var entry = '';
17var files = [];
18
19var packageFile = path.resolve(process.cwd(), './package.json');
20
21var stats = (function statsIIFE() {
22 try {
23 return fs.statSync(packageFile);
24 } catch (e) {
25 return null;
26 }
27})();
28
29if (stats && stats.isFile()) {
30 libPkg = require(packageFile);
31 libName = libPkg.name;
32
33 if (libPkg['jsnext:main']) {
34 entry = ['jsnext:main'];
35 }
36}
37
38program.version(pkg.version)
39 .usage('[options] <file ...>')
40 .option('-n, --lib-name <libName>',
41 'Library name (defaults to `name` from `package.json` if available)')
42 .option('--module-name <moduleName>', 'Module name for UMD build')
43 .option('-f, --format <format>', 'Build formats (comma separated; default: es6,umd,cjs)')
44 .option('-d, --dest <dest>', 'Destination')
45 .parse(process.argv);
46
47libName = program.libName || libName || 'library';
48moduleName = program.moduleName || moduleName;
49format = program.format || format;
50dest = program.dest || dest;
51
52files = program.args;
53if (files.length === 0) {
54 files = [entry];
55}
56
57if (files.length > 0) {
58 files.forEach(function forEach(arg) {
59 rollupBabelLibBundler({
60 name: libName,
61 moduleName: moduleName,
62 dest: dest,
63 entry: arg,
64 format: (format) ? format.split(',') : format
65 }).then(function buildThen(builds) {
66 console.log('All done!');
67
68 builds.forEach(function buildForEach(buildStats) {
69 var moduleFormat = buildStats.format.toUpperCase();
70 var buildName = buildStats.name;
71 var duration = buildStats.endTime - buildStats.startTime;
72
73 // TODO: I really miss template strings here.
74 var o = 'Built ' + moduleFormat + ' module for ' + buildName + '. Took ' + duration + ' ms';
75
76 console.log(o);
77 });
78 }).catch(function buildCatch(err) {
79 console.log('Error while generating a build:');
80
81 if (err.stack) {
82 console.error(err.stack);
83 } else {
84 if (err.message) {
85 console.error(err.message);
86 }
87 }
88
89 process.exit(1);
90 });
91 });
92} else {
93 console.log('No files specified');
94}