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>
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.