From 5d99817555313750389c800dfa87fcc6442d4d82 Mon Sep 17 00:00:00 2001 From: John Knox Date: Fri, 5 Jul 2019 07:57:12 -0700 Subject: [PATCH] Add --no-plugins arg to speed up headless development Summary: Compiling headless flipper takes a long time. This is because it individually compiles and bundles every plugin. When debugging core headless, you don't need to compile any plugins, so this adds a build flag `--no-plugins` to skip that and vastly speed up iteration speed. Reduces build time from 3 minutes to 20s Reviewed By: priteshrnandgaonkar Differential Revision: D16131322 fbshipit-source-id: 2b38ee37183a1257b3993f392cf623b2631fd7da --- scripts/build-headless.js | 9 ++++++++- scripts/build-utils.js | 12 +++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/scripts/build-headless.js b/scripts/build-headless.js index 8d43caa34..6a54a1913 100644 --- a/scripts/build-headless.js +++ b/scripts/build-headless.js @@ -84,6 +84,10 @@ async function createZip(buildDir, distDir, targets) { platformPostfix = ''; } + // Compiling all plugins takes a long time. Use this flag for quicker + // developement iteration by not including any plugins. + const skipPlugins = process.argv.indexOf('--no-plugins') > -1; + process.env.BUILD_HEADLESS = 'true'; const buildDir = await buildFolder(); const distDir = path.join(__dirname, '..', 'dist'); @@ -93,7 +97,10 @@ async function createZip(buildDir, distDir, targets) { const versionNumber = getVersionNumber(); const buildRevision = await genMercurialRevision(); await preludeBundle(buildDir, versionNumber, buildRevision); - await compileDefaultPlugins(path.join(buildDir, PLUGINS_FOLDER_NAME)); + await compileDefaultPlugins( + path.join(buildDir, PLUGINS_FOLDER_NAME), + skipPlugins, + ); await createBinary([ path.join(buildDir, 'bundle.js'), '--output', diff --git a/scripts/build-utils.js b/scripts/build-utils.js index e583edd55..6e3854a07 100644 --- a/scripts/build-utils.js +++ b/scripts/build-utils.js @@ -17,13 +17,15 @@ function die(err) { process.exit(1); } -function compileDefaultPlugins(defaultPluginDir) { +function compileDefaultPlugins(defaultPluginDir, skipAll = false) { return compilePlugins( null, - [ - path.join(__dirname, '..', 'src', 'plugins'), - path.join(__dirname, '..', 'src', 'fb', 'plugins'), - ], + skipAll + ? [] + : [ + path.join(__dirname, '..', 'src', 'plugins'), + path.join(__dirname, '..', 'src', 'fb', 'plugins'), + ], defaultPluginDir, {force: true, failSilently: false}, )