From b1d960e4c4378f15c159b3b0422d2316a341e583 Mon Sep 17 00:00:00 2001 From: Michel Weststrate Date: Fri, 24 Dec 2021 02:15:25 -0800 Subject: [PATCH] Make sure plugin loading works in NPX builds Summary: Make sure non-bundled plugins load correctly . Note that sourcemaps don't load yet Reviewed By: nikoant Differential Revision: D33278639 fbshipit-source-id: 9951286ec6df65f33149e4687261a43e6c072c31 --- .../src/initializeRenderHost.tsx | 7 +++++-- desktop/scripts/build-flipper-server-release.ts | 9 +++++++++ desktop/static/index.web.html | 14 -------------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/desktop/flipper-ui-browser/src/initializeRenderHost.tsx b/desktop/flipper-ui-browser/src/initializeRenderHost.tsx index 38f22bee3..75bd1b3f0 100644 --- a/desktop/flipper-ui-browser/src/initializeRenderHost.tsx +++ b/desktop/flipper-ui-browser/src/initializeRenderHost.tsx @@ -61,8 +61,11 @@ export function initializeRenderHost( async requirePlugin(path) { // TODO: use `await import(path)`? const source = await flipperServer.exec('plugin-source', path); - // eslint-disable-next-line no-eval - return eval(source); + // eslint-disable-next-line no-new-func + const cjsLoader = new Function('module', source); + const theModule = {exports: {}}; + cjsLoader(theModule); + return theModule.exports; }, getStaticResourceUrl(path): string { // the 'static' folder is mounted as static middleware in Express at the root diff --git a/desktop/scripts/build-flipper-server-release.ts b/desktop/scripts/build-flipper-server-release.ts index 0021ffa50..e7cfa9b81 100644 --- a/desktop/scripts/build-flipper-server-release.ts +++ b/desktop/scripts/build-flipper-server-release.ts @@ -46,6 +46,11 @@ const argv = yargs type: 'boolean', default: true, }, + 'enabled-plugins': { + describe: + 'Load only specified plugins and skip loading rest. This is useful when you are developing only one or few plugins. Plugins to load can be specified as a comma-separated list with either plugin id or name used as identifier, e.g. "--enabled-plugins network,inspector". The flag is not provided by default which means that all plugins loaded.', + type: 'array', + }, }) .version('DEV') .help() @@ -76,6 +81,10 @@ if (argv['public-build'] === true) { delete process.env.FLIPPER_FORCE_PUBLIC_BUILD; } +if (argv['enabled-plugins'] !== undefined) { + process.env.FLIPPER_ENABLED_PLUGINS = argv['enabled-plugins'].join(','); +} + (async () => { console.log(`⚙️ Starting build-flipper-server-release`); diff --git a/desktop/static/index.web.html b/desktop/static/index.web.html index 4448c9dab..f3883d86e 100644 --- a/desktop/static/index.web.html +++ b/desktop/static/index.web.html @@ -57,26 +57,12 @@ - -