nestrs-scaffold — the binary you run is still nestrs. It scaffolds new single-crate applications, generates source files, and runs a lightweight diagnostic against your toolchain and Cargo.toml. Unlike the Nest CLI, it stays entirely within Cargo-native workflows and does not add Node-style scripts, monorepo management, or library packaging.
Install
The crates.io package is
nestrs-scaffold because the name nestrs-cli is already taken. The installed binary is nestrs in either case..cargo/config.toml as run -p nestrs-scaffold --bin nestrs --.
Available commands
| Command | Purpose |
|---|---|
nestrs new <name> | Create a new single-crate app with Cargo.toml, src/main.rs, starter module/controller, .env, .env.example, Dockerfile, .gitignore, and README.md. |
nestrs generate / nestrs g | Generate resources, services, controllers, modules, DTOs, guards, pipes, filters, interceptors, strategies, resolvers, gateways, microservices, and transports. |
nestrs doctor | Print rustc and cargo versions, scan Cargo.toml for nestrs feature flags, and heuristically check src/**/*.rs for common misconfigurations. |
nestrs new
nestrs new <name> creates a ready-to-run single-crate application. Run it from any directory — it creates a new subdirectory named after your project.
Flags
| Flag | Default | Description |
|---|---|---|
--no-git | off | Skip git init after creating the project. |
--strict | off | Prepend #![deny(unsafe_code)] to src/main.rs. |
--package-manager cargo | cargo | Only cargo is supported. Other values are rejected. |
Generated project structure
Afternestrs new billing-api, your project contains:
Cargo.toml
Cargo.toml
src/main.rs
src/main.rs
The generated entry point wires up a
AppModule with a single controller and service, a health check endpoint, metrics, and request tracing. The --strict flag adds #![deny(unsafe_code)] at the top..env and .env.example
.env and .env.example
Both files are created with identical default content:
.env is listed in .gitignore so it stays local. Commit .env.example to source control.Dockerfile
Dockerfile
A two-stage Docker build targeting
debian:bookworm-slim. The binary name matches your project name.README.md
README.md
A starter README with development, production, and Docker instructions. The app, health, and metrics URLs are pre-filled based on the generated
main.rs defaults:- App:
http://127.0.0.1:3000/api - Health:
http://127.0.0.1:3000/health - Metrics:
http://127.0.0.1:3000/metrics
nestrs doctor
nestrs doctor is a lightweight sanity check you run from the root of a nestrs crate (where Cargo.toml lives). It does not replace cargo check or your CI matrix — use it as a first-pass hint list.
What it checks
Cargo.toml feature flags
Reads the local
Cargo.toml and reports which nestrs feature flags it detects: openapi, otel, ws, graphql, and microservices. It also queries cargo metadata to count the total resolved feature flags on the nestrs package.Source file heuristics
Recursively scans
src/**/*.rs and flags common mismatches, such as:- Calling
enable_openapi()without theopenapifeature enabled inCargo.toml - Referencing
configure_tracing_opentelemetrywithout theotelfeature - Calling
enable_graphqlwithout thegraphqlfeature - Using
nestrs_openapi::paths without the feature enabled
Scope compared to the Nest CLI
The Nest CLI covers application lifecycle management, monorepos, publishable library packages, and npm-style scripts. nestrs intentionally stays closer to Cargo and normal Rust workflows.The nestrs CLI focuses on file and code generation and a single-crate
nestrs new skeleton. It does not replace Cargo for workspaces, libraries, or task runners.| Nest CLI area | nestrs | What to use instead |
|---|---|---|
nest new / app skeleton | Partial | nestrs new — single crate, opinionated starter. |
nest generate | Partial | nestrs generate — overlapping generators; naming and file trees differ. |
| Workspaces (multiple apps/libs) | No | Cargo workspaces with [workspace].members. |
| Publishable library packages | No | cargo new --lib, crates.io, path/git dependencies. |
Scripts (npm run …) | No | cargo run --bin <name>, cargo-make, just, or shell scripts. |
nest build / nest start | No | cargo build, cargo run; production: binary + process manager or container. |
| CLI plugins | No | Fork or wrap nestrs-scaffold, or generate with your own templates. |