rlsbl v0.92.0 /rlsbl monorepo
On this page

Manage a monorepo workspace of independently-versioned projects: init, add or remove projects, sync CI, list, lint, and compute release order.

#rlsbl monorepo

Manage monorepo workspaces with multiple independently-versioned projects. Initialize workspaces, add or remove projects, sync CI workflows, check name availability, and analyze dependency graphs. Provides 15 monorepo subcommands plus a release subgroup, and supports all 18 release targets in a single workspace.toml.

#monorepo init

Create a new monorepo workspace by generating the .rlsbl-monorepo directory and an empty workspace.toml configuration file at the current directory. This must be run at the repository root before adding individual projects with the add subcommand. Each workspace tracks multiple independently-versioned projects that share a single git repository.

#Flags

Flags
NameShortTypeDefaultEnvDescription
--no-commitboolCreate the workspace.toml file without auto-committing it to git

#monorepo add

Register a project directory in the monorepo workspace.toml configuration. The path argument specifies the project's location relative to the repo root. Optionally set a display name, target registry for publishing, glob patterns for change detection, a subtree remote URL for split publishing, inter-project dependencies, and a library flag to mark shared code packages.

#Flags

Flags
NameShortTypeDefaultEnvDescription
--namestrDisplay name for the project in workspace.toml (defaults to directory name)
--targetstrRegistry this project publishes to (e.g. npm, pypi, go, cargo)
--watchstrComma-separated glob patterns for change detection in CI workflows
--subtree-remotestrGit remote URL for split-publishing this project as a standalone repo
--depends-onstrComma-separated names of workspace projects this project depends on
--librarystrMark as a shared library consumed by other workspace projects (true/false)
--dev-onlystrMark as a dev-only leaf node excluded from the dependency boundary guardrail (true/false)
--releasablestrReleasable group this project belongs to (name of a [[releasables]] entry, or 'false' to opt out of versioning)
--no-commitboolSkip auto-commit of workspace.toml and suppress commits from auto-triggered scaffold/sync

#Arguments

Arguments
NameRequiredDescription
pathyesRelative path from the repo root to the project directory to register

#monorepo remove

Unregister a project from the monorepo workspace.toml by its path. This removes the project entry from the workspace configuration file but does not delete any files, directories, or git history on disk. The project's code remains intact and can be re-added later with the add subcommand if needed.

#Arguments

Arguments
NameRequiredDescription
pathyesRelative path from the repo root of the project to unregister from workspace.toml

#monorepo list

Display all projects registered in the monorepo workspace.toml file. For each project, shows the project name, relative path from the repo root, target registry for publishing, and any configured options such as watch patterns, subtree remotes, inter-project dependencies, and whether the project is marked as a library.

#monorepo sync

Copy and merge CI workflow files from each project's individual scaffold into the shared .github/workflows directory at the repository root. This ensures that every project in the workspace has its publish and test pipelines properly configured as GitHub Actions workflows, even when projects use different target registries or have custom workflow steps.

#Flags

Flags
NameShortTypeDefaultEnvDescription
--no-commitboolWrite merged workflow files to .github/workflows/ without auto-committing

#monorepo status

Show the current version, last release tag, and number of unreleased commits for every project in the monorepo workspace. Provides a quick overview of which projects have pending changes and are ready for their next release. Projects with zero unreleased commits are shown as up-to-date.

#monorepo check-names

Check package name availability on a target registry for all projects in the monorepo workspace. Queries the registry API for each project name and reports whether it is available or already taken. Supports optional prefix and suffix arguments to test naming conventions like scoped packages, with a configurable delay between registry queries to avoid rate limiting.

#Flags

Flags
NameShortTypeDefaultEnvDescription
--targetstrRegistry to query for name availability across all workspace projects (npm, pypi, go, or github)
--prefixstrString to prepend to each project name before checking availability
--suffixstrString to append to each project name before checking availability
--delaystr200Milliseconds to wait between consecutive registry API queries (default: 200)

#monorepo outdated

Scan all projects in the monorepo workspace for intra-workspace dependencies that reference older versions than what is currently available in the workspace. Lists each outdated dependency with the referenced version and the latest available version, helping identify which downstream projects need a version bump after upstream releases.

#monorepo snapshot

Generate a committed JSON artifact at .rlsbl-monorepo/snapshot.json summarizing all packages, versions, dependencies, and graph structure. Use --check to verify the snapshot is up-to-date without regenerating it (exits 1 if stale).

#Flags

Flags
NameShortTypeDefaultEnvDescription
--checkboolVerify snapshot.json is up-to-date (exit 1 if stale)

#monorepo mirror

Initialize a subtree mirror repository for a monorepo project by performing a full git subtree split of the project's history, pushing the extracted tree to the configured subtree_remote URL, cloning the resulting standalone mirror repository, running rlsbl scaffold to generate CI workflows for independent publishing, and pushing the scaffolded mirror to its remote.

#Arguments

Arguments
NameRequiredDescription
projectyesName of the workspace project to split and push as a standalone mirror repo

#monorepo graph

Export the monorepo dependency graph in JSON, DOT (Graphviz), or indented text tree format. Supports filtering by a root package (transitive deps) or reverse package (transitive rdeps), with optional depth limiting. Use --output to write to a file instead of stdout.

#Flags

Flags
NameShortTypeDefaultEnvDescription
--formatstrjsonSerialization format for the dependency graph: json, dot (Graphviz), or text
--outputstrFile path to write the graph output to instead of printing to stdout
--rootstrFilter to show only transitive dependencies reachable from this package
--reversestrFilter to show only transitive reverse dependencies of this package
--depthintMaximum number of dependency hops to traverse from the root or reverse node

#monorepo impact

Analyze the impact of changes to a package, file, or git diff range on the monorepo dependency graph. Shows direct and transitive dependents, test scope, and release candidates. Supports package names, file paths, and --since for git-based change detection.

#Flags

Flags
NameShortTypeDefaultEnvDescription
--formatstrtextOutput serialization format for the impact report: json or text (default: text)
--depthintMaximum number of dependency hops to traverse when computing transitive impact
--sincestrGit ref to diff against HEAD (e.g. HEAD~3, v1.0.0)

#monorepo extract

Extract a package from the monorepo into a new standalone repository. Clones the monorepo, runs git filter-repo to keep only the package's history, migrates changelog entries, creates .rlsbl/ config in the new repo, and removes the project from workspace.toml.

#Arguments

Arguments
NameRequiredDescription
target_pathyesFilesystem path where the new standalone repository will be created
package_nameyesName of the package in workspace.toml to extract

#monorepo absorb

Absorb an external repository as a package in the monorepo. Runs git subtree add to import the source repo's history under the package name, adds the project to workspace.toml, and migrates changelog entries from the source repo's .rlsbl/changes/ directory.

#Flags

Flags
NameShortTypeDefaultEnvDescription
--releasablestrReleasable group to assign the absorbed package to

#Arguments

Arguments
NameRequiredDescription
package_nameyesName for the package in the monorepo workspace
source_pathyesFilesystem path to the external git repository to absorb

#monorepo extract-releasable

Extract all member packages of a releasable into a new repository. If the releasable has one member, creates a single-project repo. If it has multiple members, creates a new monorepo with workspace.toml. Migrates changelog entries for each member and removes all extracted projects from the source workspace.

#Arguments

Arguments
NameRequiredDescription
target_pathyesFilesystem path where the new repository will be created
releasable_nameyesName of the releasable group in workspace.toml to extract

#monorepo migrate-releasable

Migrate a releasable from per-package release state to the releasable model. Detects current state, consolidates per-package changelogs and versions into the releasable directory, creates a releasable-format migration tag, and removes orphaned per-package .rlsbl/changes/ and .rlsbl/releases/ directories. Requires the workspace to be in explicit mode (with [[releasables]] in workspace.toml).

#Arguments

Arguments
NameRequiredDescription
releasable_nameyesName of the releasable group in workspace.toml to migrate