cli: fix package detection breaking if package.json is not available

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2023-10-20 11:42:19 +02:00
parent bae9015f2b
commit 6bf7561d3c
2 changed files with 26 additions and 17 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
The experimental package detection will now ignore packages that don't make `package.json` available.
@@ -77,24 +77,28 @@ async function detectPackages(
return [];
}
const depPackageJson: BackstagePackageJson = require(require.resolve(
`${depName}/package.json`,
{ paths: [targetPath] },
));
if (
['frontend-plugin', 'frontend-plugin-module'].includes(
depPackageJson.backstage?.role ?? '',
)
) {
// Include alpha entry point if available. If there's no default export it will be ignored
const exp = depPackageJson.exports;
if (exp && typeof exp === 'object' && './alpha' in exp) {
return [
{ name: depName, import: depName },
{ name: depName, export: './alpha', import: `${depName}/alpha` },
];
try {
const depPackageJson: BackstagePackageJson = require(require.resolve(
`${depName}/package.json`,
{ paths: [targetPath] },
));
if (
['frontend-plugin', 'frontend-plugin-module'].includes(
depPackageJson.backstage?.role ?? '',
)
) {
// Include alpha entry point if available. If there's no default export it will be ignored
const exp = depPackageJson.exports;
if (exp && typeof exp === 'object' && './alpha' in exp) {
return [
{ name: depName, import: depName },
{ name: depName, export: './alpha', import: `${depName}/alpha` },
];
}
return [{ name: depName, import: depName }];
}
return [{ name: depName, import: depName }];
} catch {
/* ignore packages that don't make package.json available */
}
return [];
});