UNPKG

26.6 kBPlain TextView Raw
1#!/usr/bin/env node
2'use strict';
3
4function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
5
6var fs = require('fs');
7var require$$0 = _interopDefault(require('module'));
8var require$$1 = _interopDefault(require('path'));
9var sourceMapSupport = require('source-map-support');
10
11function createCommonjsModule(fn, module) {
12 return module = { exports: {} }, fn(module, module.exports), module.exports;
13}
14
15var index = createCommonjsModule(function (module) {
16module.exports = function (args, opts) {
17 if (!opts) opts = {};
18
19 var flags = { bools : {}, strings : {}, unknownFn: null };
20
21 if (typeof opts['unknown'] === 'function') {
22 flags.unknownFn = opts['unknown'];
23 }
24
25 if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
26 flags.allBools = true;
27 } else {
28 [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
29 flags.bools[key] = true;
30 });
31 }
32
33 var aliases = {};
34 Object.keys(opts.alias || {}).forEach(function (key) {
35 aliases[key] = [].concat(opts.alias[key]);
36 aliases[key].forEach(function (x) {
37 aliases[x] = [key].concat(aliases[key].filter(function (y) {
38 return x !== y;
39 }));
40 });
41 });
42
43 [].concat(opts.string).filter(Boolean).forEach(function (key) {
44 flags.strings[key] = true;
45 if (aliases[key]) {
46 flags.strings[aliases[key]] = true;
47 }
48 });
49
50 var defaults = opts['default'] || {};
51
52 var argv = { _ : [] };
53 Object.keys(flags.bools).forEach(function (key) {
54 setArg(key, defaults[key] === undefined ? false : defaults[key]);
55 });
56
57 var notFlags = [];
58
59 if (args.indexOf('--') !== -1) {
60 notFlags = args.slice(args.indexOf('--')+1);
61 args = args.slice(0, args.indexOf('--'));
62 }
63
64 function argDefined(key, arg) {
65 return (flags.allBools && /^--[^=]+$/.test(arg)) ||
66 flags.strings[key] || flags.bools[key] || aliases[key];
67 }
68
69 function setArg (key, val, arg) {
70 if (arg && flags.unknownFn && !argDefined(key, arg)) {
71 if (flags.unknownFn(arg) === false) return;
72 }
73
74 var value = !flags.strings[key] && isNumber(val)
75 ? Number(val) : val
76 ;
77 setKey(argv, key.split('.'), value);
78
79 (aliases[key] || []).forEach(function (x) {
80 setKey(argv, x.split('.'), value);
81 });
82 }
83
84 function setKey (obj, keys, value) {
85 var o = obj;
86 keys.slice(0,-1).forEach(function (key) {
87 if (o[key] === undefined) o[key] = {};
88 o = o[key];
89 });
90
91 var key = keys[keys.length - 1];
92 if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
93 o[key] = value;
94 }
95 else if (Array.isArray(o[key])) {
96 o[key].push(value);
97 }
98 else {
99 o[key] = [ o[key], value ];
100 }
101 }
102
103 function aliasIsBoolean(key) {
104 return aliases[key].some(function (x) {
105 return flags.bools[x];
106 });
107 }
108
109 for (var i = 0; i < args.length; i++) {
110 var arg = args[i];
111
112 if (/^--.+=/.test(arg)) {
113 // Using [\s\S] instead of . because js doesn't support the
114 // 'dotall' regex modifier. See:
115 // http://stackoverflow.com/a/1068308/13216
116 var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
117 var key = m[1];
118 var value = m[2];
119 if (flags.bools[key]) {
120 value = value !== 'false';
121 }
122 setArg(key, value, arg);
123 }
124 else if (/^--no-.+/.test(arg)) {
125 var key = arg.match(/^--no-(.+)/)[1];
126 setArg(key, false, arg);
127 }
128 else if (/^--.+/.test(arg)) {
129 var key = arg.match(/^--(.+)/)[1];
130 var next = args[i + 1];
131 if (next !== undefined && !/^-/.test(next)
132 && !flags.bools[key]
133 && !flags.allBools
134 && (aliases[key] ? !aliasIsBoolean(key) : true)) {
135 setArg(key, next, arg);
136 i++;
137 }
138 else if (/^(true|false)$/.test(next)) {
139 setArg(key, next === 'true', arg);
140 i++;
141 }
142 else {
143 setArg(key, flags.strings[key] ? '' : true, arg);
144 }
145 }
146 else if (/^-[^-]+/.test(arg)) {
147 var letters = arg.slice(1,-1).split('');
148
149 var broken = false;
150 for (var j = 0; j < letters.length; j++) {
151 var next = arg.slice(j+2);
152
153 if (next === '-') {
154 setArg(letters[j], next, arg)
155 continue;
156 }
157
158 if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
159 setArg(letters[j], next.split('=')[1], arg);
160 broken = true;
161 break;
162 }
163
164 if (/[A-Za-z]/.test(letters[j])
165 && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
166 setArg(letters[j], next, arg);
167 broken = true;
168 break;
169 }
170
171 if (letters[j+1] && letters[j+1].match(/\W/)) {
172 setArg(letters[j], arg.slice(j+2), arg);
173 broken = true;
174 break;
175 }
176 else {
177 setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
178 }
179 }
180
181 var key = arg.slice(-1)[0];
182 if (!broken && key !== '-') {
183 if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
184 && !flags.bools[key]
185 && (aliases[key] ? !aliasIsBoolean(key) : true)) {
186 setArg(key, args[i+1], arg);
187 i++;
188 }
189 else if (args[i+1] && /true|false/.test(args[i+1])) {
190 setArg(key, args[i+1] === 'true', arg);
191 i++;
192 }
193 else {
194 setArg(key, flags.strings[key] ? '' : true, arg);
195 }
196 }
197 }
198 else {
199 if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
200 argv._.push(
201 flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
202 );
203 }
204 if (opts.stopEarly) {
205 argv._.push.apply(argv._, args.slice(i + 1));
206 break;
207 }
208 }
209 }
210
211 Object.keys(defaults).forEach(function (key) {
212 if (!hasKey(argv, key.split('.'))) {
213 setKey(argv, key.split('.'), defaults[key]);
214
215 (aliases[key] || []).forEach(function (x) {
216 setKey(argv, x.split('.'), defaults[key]);
217 });
218 }
219 });
220
221 if (opts['--']) {
222 argv['--'] = new Array();
223 notFlags.forEach(function(key) {
224 argv['--'].push(key);
225 });
226 }
227 else {
228 notFlags.forEach(function(key) {
229 argv._.push(key);
230 });
231 }
232
233 return argv;
234};
235
236function hasKey (obj, keys) {
237 var o = obj;
238 keys.slice(0,-1).forEach(function (key) {
239 o = (o[key] || {});
240 });
241
242 var key = keys[keys.length - 1];
243 return key in o;
244}
245
246function isNumber (x) {
247 if (typeof x === 'number') return true;
248 if (/^0x[0-9a-f]+$/i.test(x)) return true;
249 return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
250}
251});
252
253var minimist = (index && typeof index === 'object' && 'default' in index ? index['default'] : index);
254
255var help = "rollup version __VERSION__\n=====================================\n\nUsage: rollup [options] <entry file>\n\nBasic options:\n\n-v, --version Show version number\n-h, --help Show this help message\n-c, --config Use this config file (if argument is used but value\n is unspecified, defaults to rollup.config.js)\n-w, --watch Watch files in bundle and rebuild on changes\n-i, --input Input (alternative to <entry file>)\n-o, --output <output> Output (if absent, prints to stdout)\n-f, --format [es6] Type of output (amd, cjs, es6, iife, umd)\n-e, --external Comma-separate list of module IDs to exclude\n-g, --globals Comma-separate list of `module ID:Global` pairs\n Any module IDs defined here are added to external\n-n, --name Name for UMD export\n-u, --id ID for AMD module (default is anonymous)\n-m, --sourcemap Generate sourcemap (`-m inline` for inline map)\n--no-strict Don't emit a `\"use strict\";` in the generated modules.\n--no-indent Don't indent result\n--environment <values> Settings passed to config file (see example)\n--no-conflict Generate a noConflict method for UMD globals\n--intro Content to insert at top of bundle (inside wrapper)\n--outro Content to insert at end of bundle (inside wrapper)\n--banner Content to insert at top of bundle (outside wrapper)\n--footer Content to insert at end of bundle (outside wrapper)\n\nExamples:\n\n# use settings in config file\nrollup -c\n\n# in config file, process.env.INCLUDE_DEPS === 'true'\n# and process.env.BUILD === 'production'\nrollup -c --environment INCLUDE_DEPS,BUILD:production\n\n# create CommonJS bundle.js from src/main.js\nrollup --format=cjs --output=bundle.js -- src/main.js\n\n# create self-executing IIFE using `window.jQuery`\n# and `window._` as external globals\nrollup -f iife --globals jquery:jQuery,lodash:_ \\\n -i src/app.js -o build/app.js -m build/app.js.map\n\nNotes:\n\n* When piping to stdout, only inline sourcemaps are permitted\n\nFor more information visit https://github.com/rollup/rollup/wiki\n";
256
257var version = "0.33.2";
258
259var index$1 = createCommonjsModule(function (module) {
260/*
261relative require
262*/'use strict';
263
264var path = require$$1;
265var Module = require$$0;
266
267var modules = {};
268
269var getModule = function(dir) {
270 var rootPath = dir ? path.resolve(dir) : process.cwd();
271 var rootName = path.join(rootPath, '@root');
272 var root = modules[rootName];
273 if (!root) {
274 root = new Module(rootName);
275 root.filename = rootName;
276 root.paths = Module._nodeModulePaths(rootPath);
277 modules[rootName] = root;
278 }
279 return root;
280};
281
282var requireRelative = function(requested, relativeTo) {
283 var root = getModule(relativeTo);
284 return root.require(requested);
285};
286
287requireRelative.resolve = function(requested, relativeTo) {
288 var root = getModule(relativeTo);
289 return Module._resolveFilename(requested, root);
290};
291
292module.exports = requireRelative;
293});
294
295var relative = (index$1 && typeof index$1 === 'object' && 'default' in index$1 ? index$1['default'] : index$1);
296
297var index$4 = createCommonjsModule(function (module) {
298'use strict';
299var argv = process.argv;
300
301var terminator = argv.indexOf('--');
302var hasFlag = function (flag) {
303 flag = '--' + flag;
304 var pos = argv.indexOf(flag);
305 return pos !== -1 && (terminator !== -1 ? pos < terminator : true);
306};
307
308module.exports = (function () {
309 if ('FORCE_COLOR' in process.env) {
310 return true;
311 }
312
313 if (hasFlag('no-color') ||
314 hasFlag('no-colors') ||
315 hasFlag('color=false')) {
316 return false;
317 }
318
319 if (hasFlag('color') ||
320 hasFlag('colors') ||
321 hasFlag('color=true') ||
322 hasFlag('color=always')) {
323 return true;
324 }
325
326 if (process.stdout && !process.stdout.isTTY) {
327 return false;
328 }
329
330 if (process.platform === 'win32') {
331 return true;
332 }
333
334 if ('COLORTERM' in process.env) {
335 return true;
336 }
337
338 if (process.env.TERM === 'dumb') {
339 return false;
340 }
341
342 if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
343 return true;
344 }
345
346 return false;
347})();
348});
349
350var require$$0$1 = (index$4 && typeof index$4 === 'object' && 'default' in index$4 ? index$4['default'] : index$4);
351
352var index$6 = createCommonjsModule(function (module) {
353'use strict';
354module.exports = function () {
355 return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
356};
357});
358
359var require$$0$2 = (index$6 && typeof index$6 === 'object' && 'default' in index$6 ? index$6['default'] : index$6);
360
361var index$5 = createCommonjsModule(function (module) {
362'use strict';
363var ansiRegex = require$$0$2;
364var re = new RegExp(ansiRegex().source); // remove the `g` flag
365module.exports = re.test.bind(re);
366});
367
368var require$$1$1 = (index$5 && typeof index$5 === 'object' && 'default' in index$5 ? index$5['default'] : index$5);
369
370var index$7 = createCommonjsModule(function (module) {
371'use strict';
372var ansiRegex = require$$0$2();
373
374module.exports = function (str) {
375 return typeof str === 'string' ? str.replace(ansiRegex, '') : str;
376};
377});
378
379var require$$2 = (index$7 && typeof index$7 === 'object' && 'default' in index$7 ? index$7['default'] : index$7);
380
381var index$8 = createCommonjsModule(function (module) {
382'use strict';
383
384function assembleStyles () {
385 var styles = {
386 modifiers: {
387 reset: [0, 0],
388 bold: [1, 22], // 21 isn't widely supported and 22 does the same thing
389 dim: [2, 22],
390 italic: [3, 23],
391 underline: [4, 24],
392 inverse: [7, 27],
393 hidden: [8, 28],
394 strikethrough: [9, 29]
395 },
396 colors: {
397 black: [30, 39],
398 red: [31, 39],
399 green: [32, 39],
400 yellow: [33, 39],
401 blue: [34, 39],
402 magenta: [35, 39],
403 cyan: [36, 39],
404 white: [37, 39],
405 gray: [90, 39]
406 },
407 bgColors: {
408 bgBlack: [40, 49],
409 bgRed: [41, 49],
410 bgGreen: [42, 49],
411 bgYellow: [43, 49],
412 bgBlue: [44, 49],
413 bgMagenta: [45, 49],
414 bgCyan: [46, 49],
415 bgWhite: [47, 49]
416 }
417 };
418
419 // fix humans
420 styles.colors.grey = styles.colors.gray;
421
422 Object.keys(styles).forEach(function (groupName) {
423 var group = styles[groupName];
424
425 Object.keys(group).forEach(function (styleName) {
426 var style = group[styleName];
427
428 styles[styleName] = group[styleName] = {
429 open: '\u001b[' + style[0] + 'm',
430 close: '\u001b[' + style[1] + 'm'
431 };
432 });
433
434 Object.defineProperty(styles, groupName, {
435 value: group,
436 enumerable: false
437 });
438 });
439
440 return styles;
441}
442
443Object.defineProperty(module, 'exports', {
444 enumerable: true,
445 get: assembleStyles
446});
447});
448
449var require$$3 = (index$8 && typeof index$8 === 'object' && 'default' in index$8 ? index$8['default'] : index$8);
450
451var index$9 = createCommonjsModule(function (module) {
452'use strict';
453
454var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
455
456module.exports = function (str) {
457 if (typeof str !== 'string') {
458 throw new TypeError('Expected a string');
459 }
460
461 return str.replace(matchOperatorsRe, '\\$&');
462};
463});
464
465var require$$4 = (index$9 && typeof index$9 === 'object' && 'default' in index$9 ? index$9['default'] : index$9);
466
467var index$2 = createCommonjsModule(function (module) {
468'use strict';
469var escapeStringRegexp = require$$4;
470var ansiStyles = require$$3;
471var stripAnsi = require$$2;
472var hasAnsi = require$$1$1;
473var supportsColor = require$$0$1;
474var defineProps = Object.defineProperties;
475var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM);
476
477function Chalk(options) {
478 // detect mode if not set manually
479 this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled;
480}
481
482// use bright blue on Windows as the normal blue color is illegible
483if (isSimpleWindowsTerm) {
484 ansiStyles.blue.open = '\u001b[94m';
485}
486
487var styles = (function () {
488 var ret = {};
489
490 Object.keys(ansiStyles).forEach(function (key) {
491 ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
492
493 ret[key] = {
494 get: function () {
495 return build.call(this, this._styles.concat(key));
496 }
497 };
498 });
499
500 return ret;
501})();
502
503var proto = defineProps(function chalk() {}, styles);
504
505function build(_styles) {
506 var builder = function () {
507 return applyStyle.apply(builder, arguments);
508 };
509
510 builder._styles = _styles;
511 builder.enabled = this.enabled;
512 // __proto__ is used because we must return a function, but there is
513 // no way to create a function with a different prototype.
514 /* eslint-disable no-proto */
515 builder.__proto__ = proto;
516
517 return builder;
518}
519
520function applyStyle() {
521 // support varags, but simply cast to string in case there's only one arg
522 var args = arguments;
523 var argsLen = args.length;
524 var str = argsLen !== 0 && String(arguments[0]);
525
526 if (argsLen > 1) {
527 // don't slice `arguments`, it prevents v8 optimizations
528 for (var a = 1; a < argsLen; a++) {
529 str += ' ' + args[a];
530 }
531 }
532
533 if (!this.enabled || !str) {
534 return str;
535 }
536
537 var nestedStyles = this._styles;
538 var i = nestedStyles.length;
539
540 // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
541 // see https://github.com/chalk/chalk/issues/58
542 // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
543 var originalDim = ansiStyles.dim.open;
544 if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) {
545 ansiStyles.dim.open = '';
546 }
547
548 while (i--) {
549 var code = ansiStyles[nestedStyles[i]];
550
551 // Replace any instances already present with a re-opening code
552 // otherwise only the part of the string until said closing code
553 // will be colored, and the rest will simply be 'plain'.
554 str = code.open + str.replace(code.closeRe, code.open) + code.close;
555 }
556
557 // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue.
558 ansiStyles.dim.open = originalDim;
559
560 return str;
561}
562
563function init() {
564 var ret = {};
565
566 Object.keys(styles).forEach(function (name) {
567 ret[name] = {
568 get: function () {
569 return build.call(this, [name]);
570 }
571 };
572 });
573
574 return ret;
575}
576
577defineProps(Chalk.prototype, init());
578
579module.exports = new Chalk();
580module.exports.styles = ansiStyles;
581module.exports.hasColor = hasAnsi;
582module.exports.stripColor = stripAnsi;
583module.exports.supportsColor = supportsColor;
584});
585
586var red = index$2.red;
587var cyan = index$2.cyan;
588var grey = index$2.grey;
589
590function stderr$1 ( msg ) {
591 console.error( msg ); // eslint-disable-line no-console
592}
593
594var handlers = {
595 MISSING_CONFIG: function () {
596 stderr$1( red( 'Config file must export an options object. See https://github.com/rollup/rollup/wiki/Command-Line-Interface#using-a-config-file' ) );
597 },
598
599 MISSING_EXTERNAL_CONFIG: function (err) {
600 stderr$1( red( ("Could not resolve config file " + (err.config)) ) );
601 },
602
603 MISSING_INPUT_OPTION: function () {
604 stderr$1( red( 'You must specify an --input (-i) option' ) );
605 },
606
607 MISSING_OUTPUT_OPTION: function () {
608 stderr$1( red( 'You must specify an --output (-o) option when creating a file with a sourcemap' ) );
609 },
610
611 MISSING_NAME: function () {
612 stderr$1( red( 'You must supply a name for UMD exports (e.g. `--name myModule`)' ) );
613 },
614
615 PARSE_ERROR: function (err) {
616 stderr$1( red( ("Error parsing " + (err.file) + ": " + (err.message)) ) );
617 },
618
619 ONE_AT_A_TIME: function () {
620 stderr$1( red( 'rollup can only bundle one file at a time' ) );
621 },
622
623 DUPLICATE_IMPORT_OPTIONS: function () {
624 stderr$1( red( 'use --input, or pass input path as argument' ) );
625 },
626
627 ROLLUP_WATCH_NOT_INSTALLED: function () {
628 stderr$1( red( 'rollup --watch depends on the rollup-watch package, which could not be found. You can install it globally (recommended) with ' ) + cyan( 'npm install -g rollup-watch' ) );
629 },
630
631 WATCHER_MISSING_INPUT_OR_OUTPUT: function () {
632 stderr$1( red( 'must specify --input and --output when using rollup --watch' ) );
633 }
634};
635
636function handleError ( err, recover ) {
637 var handler = handlers[ err && err.code ];
638
639 if ( handler ) {
640 handler( err );
641 } else {
642 stderr$1( red( err.message || err ) );
643
644 if ( err.stack ) {
645 stderr$1( grey( err.stack ) );
646 }
647 }
648
649 stderr$1( ("Type " + (cyan( 'rollup --help' )) + " for help, or visit https://github.com/rollup/rollup/wiki") );
650
651 if ( !recover ) process.exit( 1 );
652}
653
654var SOURCEMAPPING_URL = 'sourceMa';
655SOURCEMAPPING_URL += 'ppingURL';
656
657var SOURCEMAPPING_URL$1 = SOURCEMAPPING_URL;
658
659var rollup = require( '../dist/rollup.js' ); sourceMapSupport.install();
660
661// stderr to stderr to keep `rollup main.js > bundle.js` from breaking
662var stderr = console.error.bind( console ); // eslint-disable-line no-console
663
664function runRollup ( command ) {
665 if ( command._.length > 1 ) {
666 handleError({ code: 'ONE_AT_A_TIME' });
667 }
668
669 if ( command._.length === 1 ) {
670 if ( command.input ) {
671 handleError({ code: 'DUPLICATE_IMPORT_OPTIONS' });
672 }
673
674 command.input = command._[0];
675 }
676
677 if ( command.environment ) {
678 command.environment.split( ',' ).forEach( function (pair) {
679 var index = pair.indexOf( ':' );
680 if ( ~index ) {
681 process.env[ pair.slice( 0, index ) ] = pair.slice( index + 1 );
682 } else {
683 process.env[ pair ] = true;
684 }
685 });
686 }
687
688 var config = command.config === true ? 'rollup.config.js' : command.config;
689
690 if ( config ) {
691 if ( config.slice( 0, 5 ) === 'node:' ) {
692 var pkgName = config.slice( 5 );
693 try {
694 config = relative.resolve( ("rollup-config-" + pkgName), process.cwd() );
695 } catch ( err ) {
696 try {
697 config = relative.resolve( pkgName, process.cwd() );
698 } catch ( err ) {
699 if ( err.code === 'MODULE_NOT_FOUND' ) {
700 handleError({ code: 'MISSING_EXTERNAL_CONFIG', config: config });
701 }
702
703 throw err;
704 }
705 }
706 } else {
707 // find real path of config so it matches what Node provides to callbacks in require.extensions
708 config = fs.realpathSync( config );
709 }
710
711 rollup.rollup({
712 entry: config,
713 onwarn: function (message) {
714 if ( /Treating .+ as external dependency/.test( message ) ) return;
715 stderr( message );
716 }
717 }).then( function (bundle) {
718 var ref = bundle.generate({
719 format: 'cjs'
720 });
721 var code = ref.code;
722
723 // temporarily override require
724 var defaultLoader = require.extensions[ '.js' ];
725 require.extensions[ '.js' ] = function ( m, filename ) {
726 if ( filename === config ) {
727 m._compile( code, filename );
728 } else {
729 defaultLoader( m, filename );
730 }
731 };
732
733 try {
734 var options = require( config );
735 if ( Object.keys( options ).length === 0 ) {
736 handleError({ code: 'MISSING_CONFIG' });
737 }
738 execute( options, command );
739 require.extensions[ '.js' ] = defaultLoader;
740 } catch ( err ) {
741 handleError( err );
742 }
743 })
744 .catch( stderr );
745 } else {
746 execute( {}, command );
747 }
748}
749
750var equivalents = {
751 useStrict: 'useStrict',
752 banner: 'banner',
753 footer: 'footer',
754 format: 'format',
755 globals: 'globals',
756 id: 'moduleId',
757 indent: 'indent',
758 input: 'entry',
759 intro: 'intro',
760 name: 'moduleName',
761 output: 'dest',
762 outro: 'outro',
763 sourcemap: 'sourceMap',
764 treeshake: 'treeshake'
765};
766
767function execute ( options, command ) {
768 var external;
769
770 var commandExternal = ( command.external || '' ).split( ',' );
771 var optionsExternal = options.external;
772
773 if ( command.globals ) {
774 var globals = Object.create( null );
775
776 command.globals.split( ',' ).forEach( function (str) {
777 var names = str.split( ':' );
778 globals[ names[0] ] = names[1];
779
780 // Add missing Module IDs to external.
781 if ( commandExternal.indexOf( names[0] ) === -1 ) {
782 commandExternal.push( names[0] );
783 }
784 });
785
786 command.globals = globals;
787 }
788
789 if ( typeof optionsExternal === 'function' ) {
790 external = function (id) {
791 return optionsExternal( id ) || ~commandExternal.indexOf( id );
792 };
793 } else {
794 external = ( optionsExternal || [] ).concat( commandExternal );
795 }
796
797 options.onwarn = options.onwarn || stderr;
798
799 options.external = external;
800
801 options.noConflict = command.conflict === false;
802 delete command.conflict;
803
804 // Use any options passed through the CLI as overrides.
805 Object.keys( equivalents ).forEach( function (cliOption) {
806 if ( command.hasOwnProperty( cliOption ) ) {
807 options[ equivalents[ cliOption ] ] = command[ cliOption ];
808 }
809 });
810
811 try {
812 if ( command.watch ) {
813 if ( !options.entry || ( !options.dest && !options.targets ) ) {
814 handleError({ code: 'WATCHER_MISSING_INPUT_OR_OUTPUT' });
815 }
816
817 try {
818 var watch = relative( 'rollup-watch', process.cwd() );
819 var watcher = watch( rollup, options );
820
821 watcher.on( 'event', function (event) {
822 switch ( event.code ) {
823 case 'STARTING':
824 stderr( 'checking rollup-watch version...' );
825 break;
826
827 case 'BUILD_START':
828 stderr( 'bundling...' );
829 break;
830
831 case 'BUILD_END':
832 stderr( 'bundled in ' + event.duration + 'ms. Watching for changes...' );
833 break;
834
835 case 'ERROR':
836 handleError( event.error, true );
837 break;
838
839 default:
840 stderr( 'unknown event', event );
841 }
842 });
843 } catch ( err ) {
844 if ( err.code === 'MODULE_NOT_FOUND' ) {
845 err.code = 'ROLLUP_WATCH_NOT_INSTALLED';
846 }
847
848 handleError( err );
849 }
850 } else {
851 bundle( options ).catch( handleError );
852 }
853 } catch ( err ) {
854 handleError( err );
855 }
856}
857
858function clone ( object ) {
859 return assign( {}, object );
860}
861
862function assign ( target, source ) {
863 Object.keys( source ).forEach( function (key) {
864 target[ key ] = source[ key ];
865 });
866 return target;
867}
868
869function bundle ( options ) {
870 if ( !options.entry ) {
871 handleError({ code: 'MISSING_INPUT_OPTION' });
872 }
873
874 return rollup.rollup( options ).then( function (bundle) {
875 if ( options.dest ) {
876 return bundle.write( options );
877 }
878
879 if ( options.targets ) {
880 var result = null;
881
882 options.targets.forEach( function (target) {
883 result = bundle.write( assign( clone( options ), target ) );
884 });
885
886 return result;
887 }
888
889 if ( options.sourceMap && options.sourceMap !== 'inline' ) {
890 handleError({ code: 'MISSING_OUTPUT_OPTION' });
891 }
892
893 var ref = bundle.generate( options );
894 var code = ref.code;
895 var map = ref.map;
896
897 if ( options.sourceMap === 'inline' ) {
898 code += "\n//# " + SOURCEMAPPING_URL$1 + "=" + (map.toUrl());
899 }
900
901 process.stdout.write( code );
902 });
903}
904
905var command = minimist( process.argv.slice( 2 ), {
906 alias: {
907 // Aliases
908 strict: 'useStrict',
909
910 // Short options
911 c: 'config',
912 d: 'indent',
913 e: 'external',
914 f: 'format',
915 g: 'globals',
916 h: 'help',
917 i: 'input',
918 m: 'sourcemap',
919 n: 'name',
920 o: 'output',
921 u: 'id',
922 v: 'version',
923 w: 'watch'
924 }
925});
926
927if ( command.help || ( process.argv.length <= 2 && process.stdin.isTTY ) ) {
928 console.log( ("\n" + (help.replace('__VERSION__', version)) + "\n") ); // eslint-disable-line no-console
929}
930
931else if ( command.version ) {
932 console.log( ("rollup version " + version) ); // eslint-disable-line no-console
933}
934
935else {
936 runRollup( command );
937}
\No newline at end of file