seitime-frappe/rollup/watch.js
2018-03-05 22:27:40 +05:30

59 lines
1.3 KiB
JavaScript

const path = require('path');
const chalk = require('chalk');
const rollup = require('rollup');
const log = console.log; // eslint-disable-line
const {
apps_list,
get_app_path,
get_build_json
} = require('./rollup.utils');
const {
get_rollup_options
} = require('./config');
watch_assets();
function watch_assets() {
let watchOptions = [];
apps_list.map(app => {
watchOptions.push(...get_watch_options(app));
});
log(chalk.green(`\nRollup Watcher Started`));
let watcher = rollup.watch(watchOptions);
watcher.on('event', event => {
switch(event.code) {
case 'START':
log(chalk.yellow(`\nWatching...`));
break;
case 'BUNDLE_START':
log('Rebuilding', path.basename(event.output[0]));
break;
default:
break;
}
});
}
function get_watch_options(app) {
const build_json = get_build_json(app);
if (!build_json) return [];
const watchOptions = Object.keys(build_json)
.map(output_file => {
const input_files = build_json[output_file]
.map(input_file => path.resolve(get_app_path(app), input_file));
const { inputOptions, outputOptions } = get_rollup_options(output_file, input_files);
if (output_file.endsWith('libs.min.js')) return;
return Object.assign({}, inputOptions, {
output: outputOptions
});
}).filter(Boolean);
return watchOptions;
}