Generators

Generators allow you to quickly scaffold boilerplate code for your application.

Instead of manually creating files, you can use the CLI:

npx servercn-cli g <type> <name> [options]

Aliases

| Alias | Type       |
| ----- | ---------- |
| co    | controller |
| se    | service    |
| ro    | route      |
| mo    | model      |
| dt    | dto        |
| va    | validator  |
| re    | resource   |

Options

  • --force: Overwrite existing files
  • --flat: Generate files in a flat structure
  • -h, --help: display help for command


Available Generators

npx servercn-cli g co auth
Creates:
  • MVC: src/controllers/auth.controller.ts
  • Feature: src/modules/auth/auth.controller.ts
Examples:
# MVC Architecture
> npx servercn-cli g co auth
 
CREATE: src\controllers\auth.controller.ts
 
✔ Successfully generated controller: auth
# Feature Architecture
> npx servercn-cli g co auth
 
CREATE: src\modules\auth\auth.controller.ts
 
✔ Successfully generated controller: auth

npx servercn-cli g se auth
Creates:
  • MVC: src/services/auth.controller.ts
  • Feature: src/modules/auth/auth.service.ts


npx servercn-cli g ro auth
Creates:
  • MVC: src/routes/auth.route.ts
  • Feature: src/modules/auth/auth.route.ts


npx servercn-cli g mo user
Creates:
  • MVC: src/models/user.model.ts
  • Feature: src/modules/auth/user.model.ts


Generate Data Transfer Objects (DTOs) using zod for validation and type inference.

DTOs are used to validate incoming data (e.g. request body, params, query).

npx servercn-cli g dto <name> [fields...] [options]

fields: Define fields using: key:type

npx servercn-cli g dto auth
npx servercn-cli g dt user --flat
npx servercn-cli g dt user name:string email:email age:number
Creates:
  • MVC: src/dtos/auth.dto.ts
  • Feature: src/modules/auth/auth.dto.ts


Generate Validators using zod for validation and type inference.

npx servercn-cli g va <name> [fields...] [options]

fields: Define fields using: key:type

npx servercn-cli g va auth
npx servercn-cli g va auth --flat
npx servercn-cli g va user name:string email:email age:number
Creates:
  • MVC: src/validators/auth.validator.ts
  • Feature: src/modules/auth/auth.validator.ts


npx servercn-cli g re post
Creates:

1. MVC:

  • src/controllers/post.controller.ts
  • src/services/post.service.ts
  • src/routes/post.route.ts
  • src/models/post.model.ts
  • src/dtos/post.dto.ts

Example:

> npx servercn-cli g re post
 
CREATE: src\controllers\post.controller.ts
CREATE: src\services\post.service.ts
CREATE: src\routes\post.route.ts
CREATE: src\models\post.model.ts
CREATE: src\dtos\post.dto.ts
 
✔ Successfully generated resource: post

2. Feature:

  • src\modules\post\post.controller.ts
  • src\modules\post\post.service.ts
  • src\modules\post\post.route.ts
  • src\modules\post\post.model.ts
  • src\modules\post\post.dto.ts

Example:

> npx servercn-cli g re post
 
CREATE: src\modules\post\post.controller.ts
CREATE: src\modules\post\post.service.ts
CREATE: src\modules\post\post.route.ts
CREATE: src\modules\post\post.model.ts
CREATE: src\modules\post\post.dto.ts
 
✔ Successfully generated resource: post


Help

npx servercn-cli g --help
Usage: servercn-cli generate|g [options] <type> <name> [fields...]
 
Generate resources (controller, service, resource, model,
route, dto, validator, etc.)
 
Options:
  --force     Overwrite existing files
  --flat      Generate files in a flat structure
  -h, --help  display help for command
 
Aliases:
  co → controller
  se → service
  mo → model
  ro → route
  re → resource
  dt → dto
  va → validator
 
Examples:
  $ npx servercn-cli g co user
  $ npx servercn-cli g re auth 
  $ npx servercn-cli g mo user
  $ npx servercn-cli g ro user
  $ npx servercn-cli g se user
  $ npx servercn-cli g dt user
  $ npx servercn-cli g va user

Summary

npx servercn-cli g co auth
npx servercn-cli g se user
npx servercn-cli g mo user
npx servercn-cli g ro auth
npx servercn-cli g re post
npx servercn-cli g dt auth
npx servercn-cli g va auth
npx servercn-cli g --help