Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@backstage/plugin-scaffolder-node

backstage384.2kApache-2.00.9.0TypeScript support: included

The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend

readme

headline

Backstage

English | 한국어 | 中文版 | Français

License CNCF Status Discord Code style Codecov OpenSSF Best Practices OpenSSF Scorecard

What is Backstage?

Backstage is an open source framework for building developer portals. Powered by a centralized software catalog, Backstage restores order to your microservices and infrastructure and enables your product teams to ship high-quality code quickly without compromising autonomy.

Backstage unifies all your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end.

software-catalog

Out of the box, Backstage includes:

  • Backstage Software Catalog for managing all your software such as microservices, libraries, data pipelines, websites, and ML models
  • Backstage Software Templates for quickly spinning up new projects and standardizing your tooling with your organization’s best practices
  • Backstage TechDocs for making it easy to create, maintain, find, and use technical documentation, using a "docs like code" approach
  • Plus, a growing ecosystem of open source plugins that further expand Backstage’s customizability and functionality

Backstage was created by Spotify but is now hosted by the Cloud Native Computing Foundation (CNCF) as an Incubation level project. For more information, see the announcement.

Project roadmap

For information about the detailed project roadmap including delivered milestones, see the Roadmap.

Getting Started

To start using Backstage, see the Getting Started documentation.

Documentation

The documentation of Backstage includes:

Community

To engage with our community, you can use the following resources:

Governance

See the GOVERNANCE.md document in the backstage/community repository.

License

Copyright 2020-2025 © The Backstage Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0

Security

Please report sensitive security issues using Spotify's bug-bounty program rather than GitHub.

For further details, see our complete security release process.

changelog

@backstage/plugin-scaffolder-node

0.9.0

Minor Changes

  • 5863b04: BREAKING CHANGES

    The legacy methods to define createTemplateActions have been replaced with the new native zod approaches for defining input and output schemas.

    You can migrate actions that look like the following with the below examples:

    // really old legacy json schema
    createTemplateAction<{ repoUrl: string }, { repoOutput: string }>({
      id: 'test',
      schema: {
        input: {
          type: 'object'
          required: ['repoUrl']
          properties: {
            repoUrl: {
              type: 'string',
              description: 'repository url description'
            }
          }
        }
      }
    });
    
    // old zod method
    createTemplateAction({
      id: 'test'
      schema: {
        input: {
          repoUrl: z.string({ description: 'repository url description' })
        }
      }
    })
    
    // new method:
    createTemplateAction({
      id: 'test',
      schema: {
        input: {
          repoUrl: z => z.string({ description: 'repository url description' })
        }
      }
    })
    
    // or for more complex zod types like unions
    createTemplateAction({
      id: 'test',
      schema: {
        input: z => z.object({
          repoUrl: z.string({ description: 'repository url description' })
        })
      }
    })

    This breaking change also means that logStream has been removed entirely from ActionsContext, and that the logger is now just a LoggerService implementation instead. There is no replacement for the logStream, if you wish to still keep using a logStream we recommend that you create your own stream that writes to ctx.logger instead.

Patch Changes

0.9.0-next.2

Minor Changes

  • 5863b04: BREAKING CHANGES

    The legacy methods to define createTemplateActions have been replaced with the new native zod approaches for defining input and output schemas.

    You can migrate actions that look like the following with the below examples:

    // really old legacy json schema
    createTemplateAction<{ repoUrl: string }, { repoOutput: string }>({
      id: 'test',
      schema: {
        input: {
          type: 'object'
          required: ['repoUrl']
          properties: {
            repoUrl: {
              type: 'string',
              description: 'repository url description'
            }
          }
        }
      }
    });
    
    // old zod method
    createTemplateAction({
      id: 'test'
      schema: {
        input: {
          repoUrl: z.string({ description: 'repository url description' })
        }
      }
    })
    
    // new method:
    createTemplateAction({
      id: 'test',
      schema: {
        input: {
          repoUrl: z => z.string({ description: 'repository url description' })
        }
      }
    })
    
    // or for more complex zod types like unions
    createTemplateAction({
      id: 'test',
      schema: {
        input: z => z.object({
          repoUrl: z.string({ description: 'repository url description' })
        })
      }
    })

    This breaking change also means that logStream has been removed entirely from ActionsContext, and that the logger is now just a LoggerService implementation instead. There is no replacement for the logStream, if you wish to still keep using a logStream we recommend that you create your own stream that writes to ctx.logger instead.

Patch Changes

0.8.3-next.1

Patch Changes

0.8.3-next.0

Patch Changes

0.8.2

Patch Changes

0.8.2-next.3

Patch Changes

0.8.2-next.2

Patch Changes

0.8.2-next.1

Patch Changes

0.8.2-next.0

Patch Changes

0.8.1

Patch Changes

0.8.1-next.1

Patch Changes

0.8.1-next.0

Patch Changes

0.8.0

Minor Changes

  • 1a58846: DEPRECATION: We've deprecated the old way of defining actions using createTemplateAction with raw JSONSchema and type parameters, as well as using zod through an import. You can now use the new format to define createTemplateActions with zod provided by the framework. This change also removes support for logStream in the context as well as moving the logger to an instance of LoggerService.

    Before:

    createTemplateAction<{ repoUrl: string }, { test: string }>({
      id: 'test',
      schema: {
        input: {
          type: 'object',
          required: ['repoUrl'],
          properties: {
            repoUrl: { type: 'string' },
          },
        },
        output: {
          type: 'object',
          required: ['test'],
          properties: {
            test: { type: 'string' },
          },
        },
      },
      handler: async ctx => {
        ctx.logStream.write('blob');
      },
    });
    
    // or
    
    createTemplateAction({
      id: 'test',
      schema: {
        input: z.object({
          repoUrl: z.string(),
        }),
        output: z.object({
          test: z.string(),
        }),
      },
      handler: async ctx => {
        ctx.logStream.write('something');
      },
    });

    After:

    createTemplateAction({
      id: 'test',
      schema: {
        input: {
          repoUrl: d => d.string(),
        },
        output: {
          test: d => d.string(),
        },
      },
      handler: async ctx => {
        // you can just use ctx.logger.log('...'), or if you really need a log stream you can do this:
        const logStream = new PassThrough();
        logStream.on('data', chunk => {
          ctx.logger.info(chunk.toString());
        });
      },
    });

Patch Changes

0.8.0-next.2

Minor Changes

  • 1a58846: DEPRECATION: We've deprecated the old way of defining actions using createTemplateAction with raw JSONSchema and type parameters, as well as using zod through an import. You can now use the new format to define createTemplateActions with zod provided by the framework. This change also removes support for logStream in the context as well as moving the logger to an instance of LoggerService.

    Before:

    createTemplateAction<{ repoUrl: string }, { test: string }>({
      id: 'test',
      schema: {
        input: {
          type: 'object',
          required: ['repoUrl'],
          properties: {
            repoUrl: { type: 'string' },
          },
        },
        output: {
          type: 'object',
          required: ['test'],
          properties: {
            test: { type: 'string' },
          },
        },
      },
      handler: async ctx => {
        ctx.logStream.write('blob');
      },
    });
    
    // or
    
    createTemplateAction({
      id: 'test',
      schema: {
        input: z.object({
          repoUrl: z.string(),
        }),
        output: z.object({
          test: z.string(),
        }),
      },
      handler: async ctx => {
        ctx.logStream.write('something');
      },
    });

    After:

    createTemplateAction({
      id: 'test',
      schema: {
        input: {
          repoUrl: d => d.string(),
        },
        output: {
          test: d => d.string(),
        },
      },
      handler: async ctx => {
        // you can just use ctx.logger.log('...'), or if you really need a log stream you can do this:
        const logStream = new PassThrough();
        logStream.on('data', chunk => {
          ctx.logger.info(chunk.toString());
        });
      },
    });

Patch Changes

0.7.1-next.1

Patch Changes

0.7.1-next.0

Patch Changes

0.7.0

Minor Changes

  • dc8dd4b: Added new createTemplateFilter, createTemplateGlobalFunction, createTemplateGlobalValue for template extensions.
  • a4aa244: This change introduces an optional taskId property to TaskContext.

Patch Changes

0.7.0-next.2

Minor Changes

  • dc8dd4b: Added new createTemplateFilter, createTemplateGlobalFunction, createTemplateGlobalValue for template extensions.

Patch Changes

0.7.0-next.1

Patch Changes

0.7.0-next.0

Minor Changes

  • a4aa244: This change introduces an optional taskId property to TaskContext.

Patch Changes

0.6.3

Patch Changes

0.6.3-next.1

Patch Changes

0.6.3-next.0

Patch Changes

0.6.2

Patch Changes

0.6.2-next.2

Patch Changes

0.6.2-next.1

Patch Changes

0.6.1-next.0

Patch Changes

0.6.0

Minor Changes

  • e61d5ef: BREAKING EXPERIMENTAL: The checkpoint method now takes an object instead of previous arguments.

    await ctx.checkpoint({ key: 'repo.create', fn: () => ockokit.repo.create({...})})

    You can also now return void from the checkpoint if the method returns void inside the checkpoint handler.

Patch Changes

0.5.1-next.3

Patch Changes

0.5.1-next.2

Patch Changes

0.5.1-next.1

Patch Changes

0.5.1-next.0

Patch Changes

0.5.0

Minor Changes

  • 3ec4e6d: Added pagination support for listing of tasks and the ability to filter on several users and task statuses.

Patch Changes

0.5.0-next.2

Patch Changes

0.5.0-next.1

Patch Changes

0.5.0-next.0

Minor Changes

  • 3ec4e6d: Added pagination support for listing of tasks and the ability to filter on several users and task statuses.

Patch Changes

0.4.11

Patch Changes

0.4.11-next.2

Patch Changes

0.4.11-next.1

Patch Changes

0.4.11-next.0

Patch Changes

0.4.9

Patch Changes

0.4.9-next.3

Patch Changes

0.4.9-next.2

Patch Changes

0.4.9-next.1

Patch Changes

0.4.9-next.0

Patch Changes

0.4.8

Patch Changes

0.4.8-next.1

Patch Changes

0.4.7-next.0

Patch Changes

0.4.5

Patch Changes

0.4.5-next.3

Patch Changes

0.4.5-next.2

Patch Changes

0.4.5-next.1

Patch Changes

0.4.5-next.0

Patch Changes

0.4.4

Patch Changes

0.4.4-next.2

Patch Changes

0.4.4-next.1

Patch Changes

0.4.4-next.0

Patch Changes

0.4.3

Patch Changes

0.4.3-next.1

Patch Changes

0.4.3-next.0

Patch Changes

0.4.2

Patch Changes

0.4.1

Patch Changes

0.4.0

Minor Changes

  • 02ee466: DEPRECATION - Deprecated the logStream in the ActionContext. Please move to using ctx.logger.x instead.
  • aa543c9: Update task context type to contain the new auth initiator credentials.

Patch Changes

0.4.0-next.2

Minor Changes

  • 02ee466: DEPRECATION - Deprecated the logStream in the ActionContext. Please move to using ctx.logger.x instead.

Patch Changes

0.4.0-next.1

Minor Changes

  • aa543c9: Update task context type to contain the new auth initiator credentials.

Patch Changes

0.3.3-next.0

Patch Changes

0.3.0

Minor Changes

  • 3a9ba42: Added functions to clone a repo, create a branch, add files and push and commit to the branch. This allows for files to be added to the a PR for use in the bitbucket pull request action for issue #21762
  • 11b9a08: Introduced the first version of recoverable tasks.
  • 78c100b: Support providing an overriding token for fetch:template, fetch:plain and fetch:file when interacting with upstream integrations

Patch Changes

0.3.0-next.3

Patch Changes

0.3.0-next.2

Patch Changes

0.3.0-next.1

Minor Changes

  • 78c100b: Support providing an overriding token for fetch:template, fetch:plain and fetch:file when interacting with upstream integrations

Patch Changes

0.3.0-next.0

Minor Changes

  • 3a9ba42: Added functions to clone a repo, create a branch, add files and push and commit to the branch. This allows for files to be added to the a PR for use in the bitbucket pull request action for issue #21762
  • 11b9a08: Introduced the first version of recoverable tasks.

Patch Changes

0.2.10

Patch Changes

0.2.10-next.2

Patch Changes

0.2.10-next.1

Patch Changes

0.2.10-next.0

Patch Changes

0.2.9

Patch Changes

0.2.9-next.3

Patch Changes

0.2.9-next.2

Patch Changes

0.2.9-next.1

Patch Changes

0.2.9-next.0

Patch Changes

0.2.8

Patch Changes

0.2.8-next.2

Patch Changes

0.2.8-next.1

Patch Changes

0.2.8-next.0

Patch Changes

0.2.6

Patch Changes

0.2.6-next.2

Patch Changes

0.2.5-next.1

Patch Changes

0.2.5-next.0

Patch Changes

0.2.3

Patch Changes

0.2.3-next.3

Patch Changes

0.2.3-next.2

Patch Changes

0.2.3-next.1

Patch Changes

0.2.2-next.0

Patch Changes

0.2.0

Minor Changes

  • e514aac3eac0: Introduce each property on action steps, allowing them to be ran repeatedly.

Patch Changes

0.1.6-next.2

Patch Changes

0.1.6-next.1

Patch Changes

0.1.6-next.0

Patch Changes

0.1.5

Patch Changes

0.1.5-next.0

Patch Changes

0.1.4

Patch Changes

0.1.4-next.2

Patch Changes

0.1.4-next.1

Patch Changes

0.1.4-next.0

Patch Changes

0.1.3

Patch Changes

0.1.3-next.2

Patch Changes

0.1.3-next.1

Patch Changes

  • 6d954de4b06: Update typing for RouterOptions::actions and ScaffolderActionsExtensionPoint::addActions to allow any kind of action being assigned to it.
  • Updated dependencies

0.1.3-next.0

Patch Changes

0.1.2

Patch Changes

0.1.2-next.3

Patch Changes

0.1.2-next.2

Patch Changes

0.1.2-next.1

Patch Changes

0.1.2-next.0

Patch Changes

0.1.1

Patch Changes

0.1.1-next.2

Patch Changes

0.1.1-next.1

Patch Changes

0.1.1-next.0

Patch Changes

0.1.0

Minor Changes

  • d72866f0cc: New package that takes over some of the types and functionality from @backstage/plugin-scaffolder-backend that are shared with other modules

Patch Changes

0.1.0-next.2

Patch Changes

0.1.0-next.1

Patch Changes

0.1.0-next.0

Minor Changes

  • d72866f0cc: New package that takes over some of the types and functionality from @backstage/plugin-scaffolder-backend that are shared with other modules

Patch Changes