From 2b4f77a4e900879de66d19f46a1f538ad78d8842 Mon Sep 17 00:00:00 2001
From: Brian Phillips <28457+brianphillips@users.noreply.github.com>
Date: Fri, 21 Jul 2023 10:20:49 -0500
Subject: [PATCH 1/2] Allow package prefixes to be customized for DevTools
dependency listing
Signed-off-by: Brian Phillips <28457+brianphillips@users.noreply.github.com>
---
.changeset/kind-cougars-allow.md | 5 +++++
plugins/devtools-backend/config.d.ts | 5 +++++
.../devtools-backend/src/api/DevToolsBackendApi.ts | 7 ++++++-
plugins/devtools/README.md | 14 +++++++++++++-
4 files changed, 29 insertions(+), 2 deletions(-)
create mode 100644 .changeset/kind-cougars-allow.md
diff --git a/.changeset/kind-cougars-allow.md b/.changeset/kind-cougars-allow.md
new file mode 100644
index 0000000000..058bec5f2e
--- /dev/null
+++ b/.changeset/kind-cougars-allow.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-devtools-backend': patch
+---
+
+Add DevTools configuration to enable dependency listing to be filtered with custom prefixes
diff --git a/plugins/devtools-backend/config.d.ts b/plugins/devtools-backend/config.d.ts
index 15e70afcf8..79d1d6159f 100644
--- a/plugins/devtools-backend/config.d.ts
+++ b/plugins/devtools-backend/config.d.ts
@@ -40,5 +40,10 @@ export interface Config {
target: string;
}>;
};
+ /**
+ * A list of package prefixes that DevTools will use for filtering all available dependencies
+ * (default is ["@backstage"])
+ */
+ packagePrefixes?: string[];
};
}
diff --git a/plugins/devtools-backend/src/api/DevToolsBackendApi.ts b/plugins/devtools-backend/src/api/DevToolsBackendApi.ts
index efd0407b31..eb5dc9f860 100644
--- a/plugins/devtools-backend/src/api/DevToolsBackendApi.ts
+++ b/plugins/devtools-backend/src/api/DevToolsBackendApi.ts
@@ -219,7 +219,12 @@ export class DevToolsBackendApi {
const lockfilePath = paths.resolveTargetRoot('yarn.lock');
const lockfile = await Lockfile.load(lockfilePath);
- const deps = [...lockfile.keys()].filter(n => n.startsWith('@backstage/'));
+ const prefixes = this.config.getOptionalStringArray(
+ 'devTools.packagePrefixes',
+ ) ?? ['@backstage/'];
+ const deps = [...lockfile.keys()].filter(n =>
+ prefixes.some(prefix => n.startsWith(prefix)),
+ );
const infoDependencies: PackageDependency[] = [];
for (const dep of deps) {
diff --git a/plugins/devtools/README.md b/plugins/devtools/README.md
index 09e76caaa4..e59f4df132 100644
--- a/plugins/devtools/README.md
+++ b/plugins/devtools/README.md
@@ -410,9 +410,21 @@ export const customDevToolsPage = ;
The following sections outline the configuration for the DevTools plugin
+### Package Dependencies
+
+By default, only packages with names starting with `@backstage/` will be listed on the main "Info" tab. If you would like additional packages to be listed, you can specify the package prefixes in your `app-config.yaml`. For example, to include backstage plugins provided by the core application as well as `@roadiehq` and `@spotify`:
+
+```yaml
+devTools:
+ packagePrefixes:
+ - @backstage/
+ - @roadiehq/backstage-
+ - @spotify/backstage-
+```
+
### External Dependencies Configuration
-If you decide to use the External Dependencies tab then you'll need to setup the configuration for it in your `app-config.yaml`, if there is no config setup then the tab will be empty. Here's an example:
+If you decide to use the External Dependencies tab then you'll need to setup the configuration for it in your `app-config.yaml`. If there is no endpoints configured, then the tab will be empty. Here's an example:
```yaml
devTools:
From 366a6b98fc567d11a254f9f03fea4c9d2fa84643 Mon Sep 17 00:00:00 2001
From: Brian Phillips <28457+brianphillips@users.noreply.github.com>
Date: Mon, 24 Jul 2023 21:44:26 -0500
Subject: [PATCH 2/2] code review feedback
Signed-off-by: Brian Phillips <28457+brianphillips@users.noreply.github.com>
---
.changeset/kind-cougars-allow.md | 11 ++++++++++-
plugins/devtools-backend/config.d.ts | 11 ++++++++---
.../devtools-backend/src/api/DevToolsBackendApi.ts | 6 +++---
plugins/devtools/README.md | 12 ++++++------
4 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/.changeset/kind-cougars-allow.md b/.changeset/kind-cougars-allow.md
index 058bec5f2e..d37c4c5cf2 100644
--- a/.changeset/kind-cougars-allow.md
+++ b/.changeset/kind-cougars-allow.md
@@ -2,4 +2,13 @@
'@backstage/plugin-devtools-backend': patch
---
-Add DevTools configuration to enable dependency listing to be filtered with custom prefixes
+Add DevTools configuration to enable dependency listing to be filtered with custom prefixes. For instance, in your `app-config.yaml`:
+
+```yaml
+devTools:
+ info:
+ packagePrefixes:
+ - @backstage/
+ - @roadiehq/backstage-
+ - @spotify/backstage-
+```
diff --git a/plugins/devtools-backend/config.d.ts b/plugins/devtools-backend/config.d.ts
index 79d1d6159f..9fc7cf1762 100644
--- a/plugins/devtools-backend/config.d.ts
+++ b/plugins/devtools-backend/config.d.ts
@@ -41,9 +41,14 @@ export interface Config {
}>;
};
/**
- * A list of package prefixes that DevTools will use for filtering all available dependencies
- * (default is ["@backstage"])
+ * Info configuration
*/
- packagePrefixes?: string[];
+ info?: {
+ /**
+ * A list of package prefixes that DevTools will use for filtering all available dependencies
+ * (default is ["@backstage"])
+ */
+ packagePrefixes?: string[];
+ };
};
}
diff --git a/plugins/devtools-backend/src/api/DevToolsBackendApi.ts b/plugins/devtools-backend/src/api/DevToolsBackendApi.ts
index eb5dc9f860..c1b1a1fa9a 100644
--- a/plugins/devtools-backend/src/api/DevToolsBackendApi.ts
+++ b/plugins/devtools-backend/src/api/DevToolsBackendApi.ts
@@ -219,9 +219,9 @@ export class DevToolsBackendApi {
const lockfilePath = paths.resolveTargetRoot('yarn.lock');
const lockfile = await Lockfile.load(lockfilePath);
- const prefixes = this.config.getOptionalStringArray(
- 'devTools.packagePrefixes',
- ) ?? ['@backstage/'];
+ const prefixes = ['@backstage', '@internal'].concat(
+ this.config.getOptionalStringArray('devTools.info.packagePrefixes') ?? [],
+ );
const deps = [...lockfile.keys()].filter(n =>
prefixes.some(prefix => n.startsWith(prefix)),
);
diff --git a/plugins/devtools/README.md b/plugins/devtools/README.md
index e59f4df132..c3c3fd9240 100644
--- a/plugins/devtools/README.md
+++ b/plugins/devtools/README.md
@@ -408,18 +408,18 @@ export const customDevToolsPage = ;
## Configuration
-The following sections outline the configuration for the DevTools plugin
+The following sections outline the configuration for the DevTools plugin.
### Package Dependencies
-By default, only packages with names starting with `@backstage/` will be listed on the main "Info" tab. If you would like additional packages to be listed, you can specify the package prefixes in your `app-config.yaml`. For example, to include backstage plugins provided by the core application as well as `@roadiehq` and `@spotify`:
+By default, only packages with names starting with `@backstage` and `@internal` will be listed on the main "Info" tab. If you would like additional packages to be listed, you can specify the package prefixes (not regular expressions) in your `app-config.yaml`. For example, to not only provide version information about backstage plugins provided by the core application (`@backstage/*` modules) but also `@roadiehq` and `@spotify` plugins, you can specify this configuration:
```yaml
devTools:
- packagePrefixes:
- - @backstage/
- - @roadiehq/backstage-
- - @spotify/backstage-
+ info:
+ packagePrefixes:
+ - @roadiehq/backstage-
+ - @spotify/backstage-
```
### External Dependencies Configuration