diff --git a/.changeset/curly-emus-own.md b/.changeset/curly-emus-own.md new file mode 100644 index 0000000000..05ad1d5701 --- /dev/null +++ b/.changeset/curly-emus-own.md @@ -0,0 +1,6 @@ +--- +'@backstage/create-app': patch +--- + +techdocs-backend: Simplified file, removing individual preparers and generators. +techdocs-backend: UrlReader is now available to use in preparers. diff --git a/.changeset/thirty-papayas-attack.md b/.changeset/thirty-papayas-attack.md new file mode 100644 index 0000000000..253ec67e6b --- /dev/null +++ b/.changeset/thirty-papayas-attack.md @@ -0,0 +1,36 @@ +--- +'@backstage/techdocs-common': minor +'@backstage/plugin-techdocs-backend': minor +--- + +In your Backstage app, `packages/backend/plugins/techdocs.ts` file has now been simplified, +to remove registering individual preparers and generators. + +Please update the file when upgrading the version of `@backstage/plugin-techdocs-backend` package. + +```typescript +const preparers = await Preparers.fromConfig(config, { + logger, + reader, +}); + +const generators = await Generators.fromConfig(config, { + logger, +}); + +const publisher = await Publisher.fromConfig(config, { + logger, + discovery, +}); +``` + +You should be able to remove unnecessary imports, and just do + +```typescript +import { + createRouter, + Preparers, + Generators, + Publisher, +} from '@backstage/plugin-techdocs-backend'; +``` diff --git a/packages/create-app/templates/default-app/packages/backend/src/plugins/techdocs.ts b/packages/create-app/templates/default-app/packages/backend/src/plugins/techdocs.ts index 1bbb5ff24b..5c7ec50ae6 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/plugins/techdocs.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/plugins/techdocs.ts @@ -1,10 +1,7 @@ import { createRouter, - DirectoryPreparer, Preparers, Generators, - TechdocsGenerator, - CommonGitPreparer, Publisher, } from '@backstage/plugin-techdocs-backend'; import { PluginEnvironment } from '../types'; @@ -14,22 +11,28 @@ export default async function createPlugin({ logger, config, discovery, + reader, }: PluginEnvironment) { - const generators = new Generators(); - const techdocsGenerator = new TechdocsGenerator(logger, config); + // Preparers are responsible for fetching source files for documentation. + const preparers = await Preparers.fromConfig(config, { + logger, + reader, + }); - generators.register('techdocs', techdocsGenerator); + // Generators are used for generating documentation sites. + const generators = await Generators.fromConfig(config, { + logger, + }); - const preparers = new Preparers(); - const directoryPreparer = new DirectoryPreparer(logger); - const commonGitPreparer = new CommonGitPreparer(logger); - - preparers.register('dir', directoryPreparer); - preparers.register('github', commonGitPreparer); - preparers.register('gitlab', commonGitPreparer); - - const publisher = Publisher.fromConfig(config, logger, discovery); + // Publisher is used for + // 1. Publishing generated files to storage + // 2. Fetching files from storage and passing them to TechDocs frontend. + const publisher = await Publisher.fromConfig(config, { + logger, + discovery, + }); + // Docker client (conditionally) used by the generators, based on techdocs.generators config. const dockerClient = new Docker(); return await createRouter({