From 1d47da718a91968fce8c01bddd760b5bdc9e9f25 Mon Sep 17 00:00:00 2001 From: Alec Larson Date: Fri, 15 Mar 2019 10:55:18 -0400 Subject: [PATCH 1/2] wip: add --watch mode to "yarn build" --- scripts/rollup/build.js | 51 ++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/scripts/rollup/build.js b/scripts/rollup/build.js index 44e5a656915..1d2274d21a6 100644 --- a/scripts/rollup/build.js +++ b/scripts/rollup/build.js @@ -1,6 +1,6 @@ 'use strict'; -const {rollup} = require('rollup'); +const rollup = require('rollup'); const babel = require('rollup-plugin-babel'); const closure = require('./plugins/closure-plugin'); const commonjs = require('rollup-plugin-commonjs'); @@ -78,6 +78,7 @@ const requestedBundleTypes = argv.type : []; const requestedBundleNames = parseRequestedNames(argv._, 'lowercase'); const forcePrettyOutput = argv.pretty; +const isWatchMode = argv.watch; const syncFBSourcePath = argv['sync-fbsource']; const syncWWWPath = argv['sync-www']; const shouldExtractErrors = argv['extract-errors']; @@ -521,19 +522,43 @@ async function createBundle(bundle, bundleType) { bundleType ); - console.log(`${chalk.bgYellow.black(' BUILDING ')} ${logKey}`); - try { - const result = await rollup(rollupConfig); - await result.write(rollupOutputOptions); - } catch (error) { - console.log(`${chalk.bgRed.black(' OH NOES! ')} ${logKey}\n`); - handleRollupError(error); - throw error; - } - for (let i = 0; i < otherOutputPaths.length; i++) { - await asyncCopyTo(mainOutputPath, otherOutputPaths[i]); + if (isWatchMode) { + rollupConfig.output = [rollupOutputOptions]; + const watcher = rollup.watch(rollupConfig); + watcher.on('event', async event => { + switch (event.code) { + case 'BUNDLE_START': + console.log(`${chalk.bgYellow.black(' BUILDING ')} ${logKey}`); + break; + case 'BUNDLE_END': + for (let i = 0; i < otherOutputPaths.length; i++) { + await asyncCopyTo(mainOutputPath, otherOutputPaths[i]); + } + console.log(`${chalk.bgGreen.black(' COMPLETE ')} ${logKey}\n`); + break; + case 'ERROR': + case 'FATAL': + // console.log(`${chalk.bgRed.black(' OH NOES! ')} ${logKey}\n`); + // handleRollupError(error); + console.log(event.code, event); + break; + } + }); + } else { + console.log(`${chalk.bgYellow.black(' BUILDING ')} ${logKey}`); + try { + const result = await rollup.rollup(rollupConfig); + await result.write(rollupOutputOptions); + } catch (error) { + console.log(`${chalk.bgRed.black(' OH NOES! ')} ${logKey}\n`); + handleRollupError(error); + throw error; + } + for (let i = 0; i < otherOutputPaths.length; i++) { + await asyncCopyTo(mainOutputPath, otherOutputPaths[i]); + } + console.log(`${chalk.bgGreen.black(' COMPLETE ')} ${logKey}\n`); } - console.log(`${chalk.bgGreen.black(' COMPLETE ')} ${logKey}\n`); } function handleRollupWarning(warning) { From 602ec9f54178262afa83c2a4a134bf856f16e11f Mon Sep 17 00:00:00 2001 From: Alec Larson Date: Fri, 15 Mar 2019 10:55:18 -0400 Subject: [PATCH 2/2] fix: handle error events --- scripts/rollup/build.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/rollup/build.js b/scripts/rollup/build.js index 1d2274d21a6..97b54415d8d 100644 --- a/scripts/rollup/build.js +++ b/scripts/rollup/build.js @@ -538,9 +538,8 @@ async function createBundle(bundle, bundleType) { break; case 'ERROR': case 'FATAL': - // console.log(`${chalk.bgRed.black(' OH NOES! ')} ${logKey}\n`); - // handleRollupError(error); - console.log(event.code, event); + console.log(`${chalk.bgRed.black(' OH NOES! ')} ${logKey}\n`); + handleRollupError(event.error); break; } });