From b1bc31044dbaf21149c74e4b9d70356f898355a4 Mon Sep 17 00:00:00 2001 From: Andrey Goncharov Date: Thu, 31 Mar 2022 04:01:33 -0700 Subject: [PATCH] Fix flipper-server build Summary: flipper-server build fails when a server add-on uses one of the ignored modules. For instance, React DevTools is goin got use `ws` which has an optional dependency on `utf-8-validate` and `bufferutil`. Even though it is optional, it is still required, and therefore picked up by Metro. This way it is silently ignored. Reviewed By: mweststrate Differential Revision: D34716514 fbshipit-source-id: a9d463d2d5d7c954e35d9a16f3da44ce17615673 --- .../babel-transformer/src/electron-requires-server.tsx | 10 ++++++++-- desktop/babel-transformer/src/electron-requires.tsx | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/desktop/babel-transformer/src/electron-requires-server.tsx b/desktop/babel-transformer/src/electron-requires-server.tsx index 25e312408..77758680f 100644 --- a/desktop/babel-transformer/src/electron-requires-server.tsx +++ b/desktop/babel-transformer/src/electron-requires-server.tsx @@ -11,7 +11,7 @@ import {CallExpression} from '@babel/types'; import {NodePath} from '@babel/traverse'; import {resolve} from 'path'; -import {BUILTINS} from './electron-requires'; +import {BUILTINS, IGNORED_MODULES} from './electron-requires'; const pluginsRootDir = resolve(__dirname, '../../plugins'); @@ -44,7 +44,13 @@ module.exports = () => ({ // yet we should exclude built-ins !( BUILTINS.includes(source) || - BUILTINS.some((moduleName) => source.startsWith(`${moduleName}/`)) + BUILTINS.some((moduleName) => + source.startsWith(`${moduleName}/`), + ) || + IGNORED_MODULES.includes(source) || + IGNORED_MODULES.some((moduleName) => + source.startsWith(`${moduleName}/`), + ) )) ) { return; diff --git a/desktop/babel-transformer/src/electron-requires.tsx b/desktop/babel-transformer/src/electron-requires.tsx index 3bec31215..04a21078b 100644 --- a/desktop/babel-transformer/src/electron-requires.tsx +++ b/desktop/babel-transformer/src/electron-requires.tsx @@ -53,7 +53,7 @@ export const BUILTINS = [ '@testing-library/dom', ]; -const IGNORED_MODULES = [ +export const IGNORED_MODULES = [ 'bufferutil', 'utf-8-validate', 'spawn-sync', @@ -92,3 +92,4 @@ module.exports = () => ({ // used by startWebServerDev to know which modules to stub module.exports.BUILTINS = BUILTINS; +module.exports.IGNORED_MODULES = IGNORED_MODULES;