Simplify bundled plugin setup

Summary: Stop bundling plugins into Flipper Server bundles. In later diffs, we will start building all plugins even in dev mode which removes the need to bundle them.

Reviewed By: lblasa

Differential Revision: D39276249

fbshipit-source-id: 091405cfcf58aa7e1bd2b382da40f8d9841ae6b1
This commit is contained in:
Andrey Goncharov
2022-09-15 10:02:19 -07:00
committed by Facebook GitHub Bot
parent a67a4e5d0f
commit a888e6affa
14 changed files with 24 additions and 129 deletions

View File

@@ -353,7 +353,7 @@ async function buildServerRelease() {
// create plugin output dir
await fs.mkdirp(path.join(dir, 'static', 'defaultPlugins'));
await prepareDefaultPlugins(argv.channel === 'insiders', true);
await prepareDefaultPlugins(argv.channel === 'insiders');
await buildServerAddOns(false);
await buildHeadlessPlugins(false);
await compileServerMain(false);

View File

@@ -27,6 +27,8 @@ import {
genMercurialRevision,
prepareDefaultPlugins,
moveSourceMaps,
buildServerAddOns,
buildHeadlessPlugins,
} from './build-utils';
import isFB from './isFB';
import copyPackageWithDependencies from './copy-package-with-dependencies';
@@ -311,6 +313,8 @@ async function copyStaticFolder(buildFolder: string) {
await compileMain();
await prepareDefaultPlugins(argv.channel === 'insiders');
await buildServerAddOns(false);
await buildHeadlessPlugins(false);
await copyStaticFolder(dir);
await downloadIcons(dir);
await compileRenderer(dir);

View File

@@ -36,7 +36,6 @@ import {
serverDir,
rootDir,
browserUiDir,
serverCoreDir,
} from './paths';
import pFilter from 'p-filter';
import child from 'child_process';
@@ -44,7 +43,6 @@ import pMap from 'p-map';
// eslint-disable-next-line flipper/no-relative-imports-across-packages
const {version} = require('../package.json');
const dev = process.env.NODE_ENV !== 'production';
// For insiders builds we bundle top 5 popular device plugins,
@@ -75,10 +73,7 @@ export function die(err: Error) {
process.exit(1);
}
export async function prepareDefaultPlugins(
isInsidersBuild: boolean = false,
flipperServerBuild = false,
) {
export async function prepareDefaultPlugins(isInsidersBuild: boolean = false) {
console.log(
`⚙️ Preparing default plugins (isInsidersBuild=${isInsidersBuild})...`,
);
@@ -107,10 +102,7 @@ export async function prepareDefaultPlugins(
await buildDefaultPlugins(defaultPlugins);
await generateDefaultPluginEntryPoints([]); // calling it here just to generate empty indexes
} else {
await generateDefaultPluginEntryPoints(
defaultPlugins,
flipperServerBuild,
);
await generateDefaultPluginEntryPoints(defaultPlugins);
}
}
console.log('✅ Prepared default plugins.');
@@ -155,7 +147,6 @@ function getGeneratedIndex(pluginRequires: string) {
async function generateDefaultPluginEntryPoints(
defaultPlugins: InstalledPluginDetails[],
flipperServerBuild?: boolean,
) {
console.log(
`⚙️ Generating entry points for ${defaultPlugins.length} bundled plugins...`,
@@ -173,10 +164,7 @@ async function generateDefaultPluginEntryPoints(
serverAddOnEntry: undefined,
} as BundledPluginDetails),
);
await fs.writeJSON(
path.join(defaultPluginsDir, 'bundled.json'),
bundledPlugins,
);
const pluginRequires = bundledPlugins
.map(
(x) =>
@@ -195,22 +183,6 @@ async function generateDefaultPluginEntryPoints(
generatedIndex,
);
const serverAddOns = flipperServerBuild
? []
: defaultPlugins.filter(({serverAddOnSource}) => !!serverAddOnSource);
const serverAddOnRequires = serverAddOns
.map(
(x) =>
` '${x.name}': tryRequire('${x.name}', () => require('${x.name}/${x.serverAddOnSource}'))`,
)
.join(',\n');
const generatedIndexServerAddOns = getGeneratedIndex(serverAddOnRequires);
await fs.ensureDir(path.join(serverCoreDir, 'src', 'defaultPlugins'));
await fs.writeFile(
path.join(serverCoreDir, 'src', 'defaultPlugins', 'index.tsx'),
generatedIndexServerAddOns,
);
console.log('✅ Generated bundled plugin entry points.');
}

View File

@@ -24,6 +24,7 @@ import {
compileMain,
prepareDefaultPlugins,
buildHeadlessPlugins,
buildServerAddOns,
} from './build-utils';
import Watchman from './watchman';
// @ts-ignore no typings for metro
@@ -445,6 +446,7 @@ function checkDevServer() {
await prepareDefaultPlugins(
process.env.FLIPPER_RELEASE_CHANNEL === 'insiders',
);
await buildServerAddOns(true);
await buildHeadlessPlugins(true);
await ensurePluginFoldersWatchable();
const port = await detect(DEFAULT_PORT);

View File

@@ -186,10 +186,9 @@ async function startWatchChanges() {
}
await prepareDefaultPlugins(
process.env.FLIPPER_RELEASE_CHANNEL === 'insiders',
true,
);
await buildHeadlessPlugins(true);
await buildServerAddOns(true);
await buildHeadlessPlugins(true);
await ensurePluginFoldersWatchable();
// builds and starts