A powerful CLI tool for scaffolding code templates with multi-variable support. Generate consistent, organized code structures across your projects with customizable templates and flexible variable transformations.
module
, feature
, domain
, etc.# Install globally
npm install -g scaffoldjs-cli
# Or use directly with npx
npx scaffold help
# Set up configuration and default templates
npx scaffold setup
# View available templates
npx scaffold list
# Get help
npx scaffold help
# View comprehensive guide
npx scaffold guide
# Generate a single file
npx scaffold make user controller
# Generate with custom variables
npx scaffold make table controller -v module=restaurant feature=dining
# Generate multiple files using a group
npx scaffold make booking crud-group -v module=hotel feature=reservations
# Inject code into existing files
npx scaffold inject import-statement src/app.module.ts -v module=auth
# Force overwrite existing files
npx scaffold make order service -v module=ecommerce --force
Command | Description | Example |
---|---|---|
setup |
Initialize scaffoldjs in your project | npx scaffold setup |
list |
Show available templates and groups | npx scaffold list |
make <resource> <template> |
Generate new files from templates | npx scaffold make user controller |
inject <template> <file> |
Inject code into existing files | npx scaffold inject method src/user.service.ts |
help |
Display help information | npx scaffold help |
guide |
Show comprehensive usage guide | npx scaffold guide |
Option | Short | Description | Example |
---|---|---|---|
--vars |
-v |
Custom variables in key=value format | -v module=auth feature=users |
--force |
-f |
Force overwrite existing files | --force |
--target |
-t |
Target point for injection | -t "// inject:methods" |
--resource |
-r |
Resource name for injection | -r user |
The configuration file defines your templates, injection points, and groups:
{
"version": 1,
"templates": {
"controller": {
"description": "Generate a controller file",
"src": "./scaffolds/controller.tp",
"dest": "./src//controllers/.controller.ts"
},
"service": {
"description": "Generate a service file",
"src": "./scaffolds/service.tp",
"dest": "./src//services/.service.ts"
},
"import-statement": {
"description": "Import statement for injection",
"src": "./scaffolds/-import.tp",
"dest": "inject"
},
"crud-group": [
"controller",
"service",
"dto",
"entity"
]
}
}
your-project/
βββ scaffold.config.json
βββ scaffolds/
β βββ controller.tp
β βββ service.tp
β βββ dto.tp
β βββ auth-import.tp
βββ src/
βββ (generated files will go here)
resource
- Automatically provided primary variableTransformation | Example Input | Example Output |
---|---|---|
raw |
user-account |
user-account |
singular |
users |
user |
plural |
user |
users |
lowerCase |
UserAccount |
useraccount |
upperCase |
user |
USER |
camelCase |
user-account |
userAccount |
pascalCase |
user-account |
UserAccount |
snakeCase |
user-account |
user_account |
spaceCase |
user-account |
user account |
hyphenCase |
user account |
user-account |
sentenceCase |
user-account |
Useraccount |
// user-accounts β UserAccount
// auth β AUTHS
// dining-tables β diningTable
scaffolds/controller.tp
)import { Controller, Get, Post, Put, Delete, Body, Param } from '@nestjs/common';
import { Service } from '../services/.service';
import { CreateDto } from '../dto/.dto';
@Controller('//')
export class Controller {
constructor(
private readonly Service: Service
) {}
@Get()
async findAll() {
return this.Service.findAll();
}
@Post()
async create(@Body() dto: CreateDto) {
return this.Service.create(dto);
}
}
// Generated for module, feature
scaffolds/auth-import.tp
)import { Module } from './/.module';
# Generate product management
npx scaffold make product crud-group -v module=catalog feature=products
# Generate order processing
npx scaffold make order service -v module=sales feature=checkout
# Add authentication
npx scaffold make user controller -v module=auth feature=users
Generated structure:
src/
βββ catalog/
β βββ controllers/product.controller.ts
β βββ services/product.service.ts
β βββ dto/product.dto.ts
β βββ entities/product.entity.ts
βββ sales/
β βββ services/order.service.ts
βββ auth/
βββ controllers/user.controller.ts
# Room management
npx scaffold make room full-feature -v module=hotel feature=rooms
# Booking system
npx scaffold make booking crud-group -v module=reservations feature=bookings
# Guest services
npx scaffold make guest service -v module=hospitality feature=guests
# Tenant management
npx scaffold make tenant controller -v module=core domain=admin
# Feature modules per tenant
npx scaffold make dashboard service -v module=analytics domain=tenant
# Billing system
npx scaffold make invoice crud-group -v module=billing domain=finance
Inject code snippets into existing files at specific points:
# Inject import statements
npx scaffold inject import-statement src/app.module.ts -v module=auth
# Inject methods into services
npx scaffold inject crud-methods src/user.service.ts -r user
# Inject routes with target point
npx scaffold inject api-route src/app.routes.ts -t "// inject:routes" -v module=auth
// inject:imports
, <!-- inject:methods -->
, etc.Existing templates using only `` variables continue to work seamlessly:
// Old template - still works
export class Service {}
// New multi-variable template
export class Service {
// Module:
// Feature:
}
{
"templates": {
"feature-controller": {
"src": "./scaffolds//controller.tp",
"dest": "./src///.controller.ts"
}
}
}
{
"templates": {
"api-controller": {
"src": "./scaffolds//api-controller.tp",
"dest": "./src//controllers/.controller.ts"
},
"web-controller": {
"src": "./scaffolds//web-controller.tp",
"dest": "./src//controllers/.controller.ts"
}
}
}
This project is licensed under the MIT License - see the LICENSE file for details.
npx scaffold guide
for comprehensive documentationIf ScaffoldJS has saved you time and helped improve your development workflow, consider buying us a coffee! Your support helps us maintain and improve the project.
Other ways to support:
Every contribution, no matter how small, helps make ScaffoldJS better for everyone! π
Made with β€οΈ by Ebuka Odini
Scaffold smarter, code faster! π