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