From af5f7a66c930db75ffd3a0ce2aa2bfd09dae8a06 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 14 Mar 2024 17:07:23 +0100 Subject: [PATCH] backend-app-api: fix feature detection trying to load frontend packages Signed-off-by: Patrik Oldsberg --- .changeset/two-hornets-allow.md | 5 +++++ .../src/alpha/featureDiscoveryServiceFactory.ts | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 .changeset/two-hornets-allow.md diff --git a/.changeset/two-hornets-allow.md b/.changeset/two-hornets-allow.md new file mode 100644 index 0000000000..a748578580 --- /dev/null +++ b/.changeset/two-hornets-allow.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +The experimental feature discovery service exported at the `/alpha` sub-path will no longer attempt to load packages that are not Backstage backend packages. diff --git a/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.ts b/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.ts index b68475a77b..5943261b0b 100644 --- a/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.ts +++ b/packages/backend-app-api/src/alpha/featureDiscoveryServiceFactory.ts @@ -29,6 +29,13 @@ import { resolve as resolvePath, dirname } from 'path'; import fs from 'fs-extra'; import { BackstagePackageJson } from '@backstage/cli-node'; +const DETECTED_PACKAGE_ROLES = [ + 'node-library', + 'backend', + 'backend-plugin', + 'backend-plugin-module', +]; + /** @internal */ async function findClosestPackageDir( searchDir: string, @@ -106,8 +113,11 @@ class PackageDiscoveryService implements FeatureDiscoveryService { const depPkg = require(require.resolve(`${name}/package.json`, { paths: [packageDir], })) as BackstagePackageJson; - if (!depPkg?.backstage || depPkg?.backstage?.role === 'cli') { - continue; // Not a backstage package, ignore + if ( + !depPkg?.backstage?.role || + !DETECTED_PACKAGE_ROLES.includes(depPkg.backstage.role) + ) { + continue; // Not a backstage backend package, ignore } const exportedModulePaths = [