You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

64 lines
1.3 KiB

  1. const path = require('path');
  2. const chalk = require('chalk');
  3. const rollup = require('rollup');
  4. const log = console.log; // eslint-disable-line
  5. const {
  6. apps_list
  7. } = require('./rollup.utils');
  8. const {
  9. get_options_for
  10. } = require('./config');
  11. watch_assets();
  12. function watch_assets() {
  13. let watchOptions = [];
  14. apps_list.map(app => {
  15. watchOptions.push(...get_watch_options(app));
  16. });
  17. log(chalk.green(`\nRollup Watcher Started`));
  18. let watcher = rollup.watch(watchOptions);
  19. watcher.on('event', event => {
  20. switch(event.code) {
  21. case 'START': {
  22. log(chalk.yellow(`\nWatching...`));
  23. break;
  24. }
  25. case 'BUNDLE_START': {
  26. const output = event.output[0];
  27. if (output.endsWith('.js')) {
  28. log('Rebuilding', path.basename(event.output[0]));
  29. }
  30. break;
  31. }
  32. default: break;
  33. }
  34. });
  35. }
  36. function get_watch_options(app) {
  37. const options = get_options_for(app);
  38. return options.map(({ inputOptions, outputOptions, output_file}) => {
  39. return Object.assign({}, inputOptions, {
  40. output: outputOptions,
  41. plugins: [log_css_change({output: output_file})].concat(inputOptions.plugins)
  42. });
  43. });
  44. }
  45. function log_css_change({output}) {
  46. return {
  47. name: 'log-css-change',
  48. ongenerate() {
  49. if (!output.endsWith('.css')) return null;
  50. log('Rebuilding', path.basename(output));
  51. return null;
  52. }
  53. };
  54. }