# @backstage/cli-node

> Node.js library for Backstage CLIs

Latest version **0.3.4** (published 2026-07-14) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @backstage/cli-node
pnpm add @backstage/cli-node
yarn add @backstage/cli-node
bun add @backstage/cli-node
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; no vulnerabilities; recently updated; high maintenance score; high quality score; popular repo.

Warnings: low downloads; no esm support; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.3.4 |
| Published | 2026-07-14 |
| First published | 2023-04-11 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 14 |
| Unpacked size | 254.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 34422 |
| Maintainers | patriko, freben, marcuseide |

## Links

- npm: https://www.npmjs.com/package/@backstage/cli-node
- Repository: https://github.com/backstage/backstage
- Homepage: https://backstage.io
- npm.io page: https://npm.io/package/@backstage/cli-node

## Dependencies (14)

- [zod](https://npm.io/package/zod.md) ^3.25.76 || ^4.0.0
- [yaml](https://npm.io/package/yaml.md) ^2.0.0
- [chalk](https://npm.io/package/chalk.md) ^4.0.0
- [cleye](https://npm.io/package/cleye.md) ^2.6.0
- [semver](https://npm.io/package/semver.md) ^7.5.3
- [pirates](https://npm.io/package/pirates.md) ^4.0.6
- [fs-extra](https://npm.io/package/fs-extra.md) ^11.2.0
- [proper-lockfile](https://npm.io/package/proper-lockfile.md) ^4.1.2
- [@backstage/types](https://npm.io/package/@backstage/types.md) ^1.2.2
- [@yarnpkg/parsers](https://npm.io/package/@yarnpkg/parsers.md) ^3.0.0
- [@backstage/errors](https://npm.io/package/@backstage/errors.md) ^1.3.1
- [@yarnpkg/lockfile](https://npm.io/package/@yarnpkg/lockfile.md) ^1.1.0
- [@backstage/cli-common](https://npm.io/package/@backstage/cli-common.md) ^0.3.0
- [@manypkg/get-packages](https://npm.io/package/@manypkg/get-packages.md) ^1.1.3

## Recent versions

- 0.3.4 (latest) — 2026-07-14
- 0.0.0-nightly-20260714031447 (nightly) — 2026-07-14
- 0.3.4-next.0 (next) — 2026-07-07
- 0.0.0-nightly-20260713031604 — 2026-07-13
- 0.0.0-nightly-20260712031654 — 2026-07-12
- 0.0.0-nightly-20260711031351 — 2026-07-11
- 0.0.0-nightly-20260710031816 — 2026-07-10
- 0.0.0-nightly-20260709031947 — 2026-07-09
- 0.0.0-nightly-20260708031420 — 2026-07-08
- 0.3.3 — 2026-06-16
- 0.0.0-nightly-20260616032439 — 2026-06-16
- 0.3.2 — 2026-05-19
- 0.0.0-nightly-20260519032312 — 2026-05-19
- 0.0.0-nightly-20260518032303 — 2026-05-18
- 0.0.0-nightly-20260517032033 — 2026-05-17
- … 522 more at https://npm.io/package/@backstage/cli-node/versions

## README

# @backstage/cli-node

This library provides utilities for building CLI tools for Backstage.

The difference between this library and `@backstage/cli-common` is that this library is more feature rich with a larger dependency tree, with less concern for bundle size and installation speed. The `@backstage/cli-common` package on the other hand is intended to be extremely slim and only provide minimal features for use in tools like `@backstage/create-app`.

## Custom CLIs

Use `runCli` to create an executable CLI from a fixed set of directly imported modules:

```ts
import { runCli } from '@backstage/cli-node';
import buildModule from '@backstage/cli-module-build';
import testModule from '@backstage/cli-module-test-jest';
import packageJson from '../package.json';

runCli({
  modules: [buildModule, testModule],
  name: packageJson.name,
  version: packageJson.version,
});
```

The caller owns module selection. The runner does not discover modules or apply module overrides.

## Documentation

- [Backstage Readme](https://github.com/backstage/backstage/blob/master/README.md)
- [Backstage Documentation](https://backstage.io/docs)

---
_Source: https://npm.io/package/@backstage/cli-node · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
