A goal of Backstage is to provide a delightful developer experience in and
around the project. Creating new apps and plugins should be simple, iteration
speed should be fast, and the overhead of maintaining custom tooling should be
minimal. As a part of accomplishing this goal, Backstage provides its own build
system and tooling, delivered primarily through the
@backstage/cli package. When
creating an app using
you receive a project that's already prepared with a typical setup and package
scripts for executing the most common commands.
Under the hood the CLI uses Webpack for bundling, Rollup for building packages, Jest for testing, and eslint for linting. It also includes tooling for working within Backstage apps, for example for keeping the app up to date and verifying static configuration. For a more in-depth look into the tooling, see the build system page, and for a list of commands, see the commands page.
The Backstage CLI intentionally does not provide many hooks for overriding or customizing the build process. This is to allow for evolution of the CLI without having to take a wide API surface into account. This allows us to iterate and improve the tooling, as well as to more easily keep the system up to date.
- Package - A package in the Node.js ecosystem, often published to a package registry such as NPM.
- Monorepo - A project layout that consists of multiple packages within a single project, where packages are able to have local dependencies on each other. Often enabled through tooling such as lerna and yarn workspaces
- Local Package - One of the packages within a monorepo. These package may or may not also be published to a package registry.
- Bundle - A collection of the deployment artifacts. The output of the bundling process, which brings a collection of packages into a single collection of deployment artifacts.
- Package Role - The declared role of a package, see package roles.