diff --git a/desktop/.eslintrc.js b/desktop/.eslintrc.js index a2fd01e50..9178296aa 100644 --- a/desktop/.eslintrc.js +++ b/desktop/.eslintrc.js @@ -12,6 +12,7 @@ const fbjs = require('eslint-config-fbjs'); // enforces copy-right header and @format directive to be present in every file const pattern = /^\*\r?\n[\S\s]*Facebook[\S\s]* \* @format\r?\n/; +// This list should match the replacements defined in `replace-flipper-requires.ts` and `dispatcher/plugins.tsx` const builtInModules = [ 'fb-qpl-xplat', 'flipper', @@ -24,6 +25,7 @@ const builtInModules = [ 'antd', 'immer', '@emotion/styled', + '@ant-design/icons', ]; const prettierConfig = require('./.prettierrc.json'); diff --git a/desktop/app/src/dispatcher/plugins.tsx b/desktop/app/src/dispatcher/plugins.tsx index ccafca625..e423348e3 100644 --- a/desktop/app/src/dispatcher/plugins.tsx +++ b/desktop/app/src/dispatcher/plugins.tsx @@ -39,7 +39,10 @@ import {tryCatchReportPluginFailures, reportUsage} from '../utils/metrics'; import * as FlipperPluginSDK from 'flipper-plugin'; import {_SandyPluginDefinition} from 'flipper-plugin'; import loadDynamicPlugins from '../utils/loadDynamicPlugins'; -import Immer from 'immer'; +import * as Immer from 'immer'; +import * as antd from 'antd'; +import * as emotion_styled from '@emotion/styled'; +import * as antdesign_icons from '@ant-design/icons'; // eslint-disable-next-line import/no-unresolved import getDefaultPluginsIndex from '../utils/getDefaultPluginsIndex'; @@ -49,12 +52,17 @@ let defaultPluginsIndex: any = null; export default async (store: Store, logger: Logger) => { // expose Flipper and exact globally for dynamically loaded plugins const globalObject: any = typeof window === 'undefined' ? global : window; + + // this list should match `replace-flipper-requires.tsx` and the `builtInModules` in `desktop/.eslintrc` globalObject.React = React; globalObject.ReactDOM = ReactDOM; globalObject.Flipper = require('../index'); globalObject.adbkit = adbkit; globalObject.FlipperPlugin = FlipperPluginSDK; globalObject.Immer = Immer; + globalObject.antd = antd; + globalObject.emotion_styled = emotion_styled; + globalObject.antdesign_icons = antdesign_icons; const gatekeepedPlugins: Array = []; const disabledPlugins: Array = []; diff --git a/desktop/babel-transformer/src/replace-flipper-requires.ts b/desktop/babel-transformer/src/replace-flipper-requires.ts index 4c868ff29..d08a49d6e 100644 --- a/desktop/babel-transformer/src/replace-flipper-requires.ts +++ b/desktop/babel-transformer/src/replace-flipper-requires.ts @@ -15,13 +15,17 @@ import { } from '@babel/types'; import {NodePath} from '@babel/traverse'; +// This list should match `dispatcher/plugins.tsx` and `builtInModules` in `desktop/.eslintrc.js` const requireReplacements: any = { flipper: 'global.Flipper', 'flipper-plugin': 'global.FlipperPlugin', react: 'global.React', 'react-dom': 'global.ReactDOM', adbkit: 'global.adbkit', + antd: 'global.antd', immer: 'global.Immer', + '@emotion/styled': 'global.emotion_styled', + '@ant-design/icons': 'global.antdesign_icons', }; export function tryReplaceFlipperRequire(path: NodePath) {