# What changed in @nestjs/cli

> 91 changes in @nestjs/cli 11 to 12 from its official release notes, upgrade guides and advisories: 9 breaking, 4 deprecations, 25 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/@nestjs/cli/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @nestjs/cli 12

### Breaking changes

- The compiler now resolves the SWC source root separately for each application. (12.0.6) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.6)
- The angular schematic has been removed. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- Build output and cleanup paths are confined to the project directory by default; symlinks are resolved before writing to prevent writes escaping the project. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- CLI schematics for nest new, nest generate, and nest upgrade require Node.js v22.22.3+, v24.15+, or v26+; nest upgrade refuses to run on older releases. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- An invalid `--builder` now produces a non-zero exit. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Programmatic imports of CLI internals now resolve to ESM; the package is published as pure ESM. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- webpack and related bundler packages are optional peer dependencies rather than bundled dependencies; webpack users must install the bundler packages themselves. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)

### Deprecations

- The webpack CLI flag is deprecated in favor of --builder rspack. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- The nest-cli.json webpack option is deprecated in favor of --builder rspack. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- The nest-cli.json webpack configuration path option is deprecated in favor of --builder rspack. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- The webpack configuration path flag is deprecated in favor of --builder rspack. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)

### New APIs and options

- Asset entries can opt out of triggering a restart when they change. (12.0.6) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.6)
- Allows monorepo layouts to emit build output outside the project root. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds an option to emit .d.ts files when using the SWC builder. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide), [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Supports `--builder rspack` to build with Rspack. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds an option that overrides the config-level type-check setting. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds emitDeclarations to enable .d.ts file emission when using the SWC builder. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- Adds includeLibraryAssets for copying library assets into an application build. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide), [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds a deploy command that forwards to Mau and installs @nestjs/mau as a dev dependency on first use. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide), [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds formatting of generated files with Prettier. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds `--observe` and `--no-observe` to answer the @nestjs/observe prompt. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds an option to scaffold a project without testing files. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Supports `--builder rspack` to start with Rspack. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds `nest update` as an alias for `nest upgrade`. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds an option to choose a collection for the upgrade. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Previews the upgrade report without touching project files. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide), [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds `--observe` and `--no-observe` to answer the @nestjs/observe prompt up front. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds an option to skip installation during the upgrade. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds a dist-tag option for choosing a tag such as `next` instead of the default version ranges. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds an option to explicitly disable SWC type checking. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- Adds parallel monorepo builds with optional concurrency when used with --all. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide), [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds `--crud [value]` to the resource schematic. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds `--type <rest|graphql|microservice>` to the resource schematic. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds a nest build and nest start option for specifying a Rspack configuration file. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide), [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Adds an option to suppress informational compiler logs. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide), [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)

### Behavior and default changes

- The default .gitignore template now includes *.tsbuildinfo. (12.0.1) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.1)
- All newly generated projects use oxlint by default. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- Rspack becomes the default bundler for monorepos. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- Source maps are enabled in the Rspack defaults. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Generated ESM projects use Vitest by default, while CommonJS projects continue to use Jest. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- Asset changes restart the application in watch mode, with debouncing so a burst of writes triggers one restart. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)

### Tooling

- The compiler now resolves TypeScript path aliases from the tsconfig directory. (12.0.6) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.6)
- SWC emits ES modules for ESM projects. (12.0.5) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.5)
- Bundler config files now support native ESM. (12.0.1) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.1)
- Schematics are shown as a plain list on narrow terminals. (12.0.1) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.1)
- The CLI adds bun as a supported package manager. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide), [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- The decorator schematic now generates decorators using the Reflector.createDecorator() form. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- Displays an explicit message when no `@nestjs/*` dependencies are declared. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Prompts users to choose whether to generate a CommonJS or ESM project layout. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide)
- Upgrades recognized @nestjs/* packages together, installs them, applies mechanical migration changes, and prints a report of changes and behavioral notes. (12.0.0) — [upgrade guide](https://docs.nestjs.com/migration-guide), [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Rspack is supported as an optional peer dependency and is the builder scaffolded into nest-cli.json for new projects. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)

### Fixes and other changes

- Preserves CommonJS entry exports in rspack and webpack builds. (12.0.8) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.8)
- Preserves parent links for aliased re-exports. (12.0.8) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.8)
- Webpack now resolves absolute tsconfig paths. (12.0.7) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.7)
- The compiler now forks the SWC type checker with the application's plugins. (12.0.7) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.7)
- SWC resolves path aliases from the tsconfig directory. (12.0.5) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.5)
- The CLI parses .swcrc with a JSONC parser to match SWC. (12.0.5) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.5)
- Dotfiles are now copied when expanding a directory asset. (12.0.1) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.1)
- ESM output now emits loadable path alias specifiers. (12.0.1) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.1)
- Plugin load errors are surfaced instead of being reported as "not compatible". (12.0.1) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.1)
- The compiler now resolves an absolute tsconfig path. (12.0.1) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.1)
- Watch mode now honors preserveWatchOutput from tsconfig. (12.0.1) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.1)
- Asset path stripping now follows the effective TypeScript `rootDir`. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- When a builder's peer dependency is missing, the CLI reports the missing package name instead of a raw resolution error. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- The `--parallel` value is validated instead of potentially looping forever. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- Malformed configuration now produces a readable error. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- SWC skips excluded files in builds and watch mode; newly added files no longer inherit watch mode when transpiled. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)
- The file is removed when `deleteOutDir` is set. (12.0.0) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/12.0.0)

## @nestjs/cli 11

### Breaking changes

- The compiler now fails fast when TypeScript lacks the programmatic API. (11.0.24) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.24)
- The CLI errors on unexpected extra positional arguments. (11.0.18) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.18)

### New APIs and options

- Adds type and CRUD options to the generate command. (11.0.22) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.22)

### Behavior and default changes

- Watch mode now skips signal forwarding. (11.0.19) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.19)
- The tsc compiler now runs the tsconfig paths plugin before user plugins. (11.0.19) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.19)

### Tooling

- Expands the peer dependency range to include ^0.8.0. (11.0.18) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.18)

### Fixes and other changes

- Removes a duplicated binary from the message shown when a command fails. (11.0.24) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.24)
- Reverts validation of asset output paths. (11.0.23) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.23)
- Reverts validation of delete output-directory paths before removal. (11.0.23) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.23)
- Validates asset output paths in the compiler. (11.0.22) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.22)
- The CRUD option accepts a value for generating entry points. (11.0.22) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.22)
- Fixes Windows path separator handling when loading plugins. (11.0.22) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.22)
- Fixes the inverted chokidar ignored filter in watch mode. (11.0.20) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.20)
- Corrected the Asset type definition from a string literal to a string union. (11.0.19) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.19)
- Fixed a missing space in the displayed OS version. (11.0.19) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.19)
- Path aliases are now resolved in declaration files. (11.0.19) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.19)
- Spec file suffix lookup now uses the selected project name. (11.0.19) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.19)
- Uses the ready event when closing the asset watcher. (11.0.18) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.18)
- The start command waits for asynchronous shutdown hooks to finish before exiting. (11.0.18) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.18)
- SWC now respects the root dir option when stripping leading paths. (11.0.18) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.18)
- The .tsbuildinfo file is deleted along with the output directory. (11.0.18) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.18)
- Prevents double initialization in SWC watch mode. (11.0.18) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.18)
- Uses synchronous spawn in tree-kill to fix a crash on Node.js 24. (11.0.15) — [release notes](https://github.com/nestjs/nest-cli/releases/tag/11.0.15)
