Files
backstage/plugins/scaffolder-backend
Darrgh Bailey 7d5a921114 Allow globby negative matches for copyWithoutTemplating
The option copyWithoutTemplating (and depracted copyWithoutRender) would
require listing all files in a path to include even if there was only
one or two files that should still be templated while skipping all
others. This works fine when just one or two files or paths that need to
be copied without being templated, however when there are many files and
only one or two should be templated, it becomes more error prone to try
and maintain a complete list and ensure others will update it correctly.

While it's possible to use separate paths to avoid this issue, it
results in subsequently needing to move files around, or use separate
template calls, this makes it more difficult to maintain a template
logically.

The existing template code already makes use of 'globby', which supports
negative matching to explicitly exclude individual paths from other
wildcard matches. The existing code would iterate over each entry
calling globby separately for each pattern passed in. This would skip
globby's ability to have negative matches remove previously matched
paths.

This change switches to pass the entire list of patterns to globby in a
single call, leaving it up to globby to parse and return the entire set
in a single operation.

Signed-off-by: Darragh Bailey <dbailey@g-p.com>
2023-11-07 14:48:23 +00:00
..
2023-07-02 19:04:10 +02:00
2023-10-23 10:51:16 +00:00
2023-10-31 15:42:09 +01:00
2023-10-31 15:42:09 +01:00

Scaffolder Backend

This is the backend for the default Backstage software templates. This provides the API for the frontend scaffolder plugin, as well as the built-in template actions, tasks and stages.

Installation

This @backstage/plugin-scaffolder-backend package comes installed by default in any Backstage application created with npx @backstage/create-app, so installation is not usually required.

To check if you already have the package, look under packages/backend/package.json, in the dependencies block, for @backstage/plugin-scaffolder-backend. The instructions below walk through restoring the plugin, if you previously removed it.

Install the package

# From your Backstage root directory
yarn add --cwd packages/backend @backstage/plugin-scaffolder-backend

Adding the plugin to your packages/backend

You'll need to add the plugin to the router in your backend package. You can do this by creating a file called packages/backend/src/plugins/scaffolder.ts with contents matching scaffolder.ts in the create-app template.

With the scaffolder.ts router setup in place, add the router to packages/backend/src/index.ts:

+import scaffolder from './plugins/scaffolder';

async function main() {
  ...
  const createEnv = makeCreateEnv(config);

  const catalogEnv = useHotMemoize(module, () => createEnv('catalog'));
+  const scaffolderEnv = useHotMemoize(module, () => createEnv('scaffolder'));

  const apiRouter = Router();
+  apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv));
  ...
  apiRouter.use(notFoundHandler());

Adding templates

At this point the scaffolder backend is installed in your backend package, but you will not have any templates available to use. These need to be added to the software catalog.

To get up and running and try out some templates quickly, you can or copy the catalog locations from the create-app template.