or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

application-building.mdcode-generation.mddevelopment-server.mdindex.mdlibrary-integration.mdproject-creation.mdproject-information.md

code-generation.mddocs/

0

# Code Generation

1

2

Generate NestJS components, services, controllers, and other architectural elements using Angular DevKit schematics. The CLI provides built-in support for the @nestjs/schematics collection with comprehensive code generation capabilities.

3

4

## Capabilities

5

6

### Generate Command

7

8

Creates NestJS elements using schematics with extensive customization options.

9

10

```bash { .api }

11

# Generate elements

12

nest generate <schematic> [name] [path] [options]

13

nest g <schematic> [name] [path] [options]

14

15

# Options:

16

-d, --dry-run # Report actions without writing results

17

-p, --project [project] # Project in which to generate files

18

--flat # Enforce flat structure of generated element

19

--no-flat # Enforce that directories are generated

20

--spec # Enforce spec files generation (default: true)

21

--spec-file-suffix [suffix] # Use custom suffix for spec files

22

--skip-import # Skip importing (default: false)

23

--no-spec # Disable spec files generation

24

-c, --collection [collectionName] # Schematics collection to use

25

```

26

27

**Usage Examples:**

28

29

```bash

30

# Generate a controller

31

nest generate controller users

32

nest g controller users

33

34

# Generate in specific path

35

nest g controller users --path=modules/users

36

37

# Generate without spec files

38

nest g controller users --no-spec

39

40

# Generate with flat structure

41

nest g service users --flat

42

43

# Generate in specific project (monorepo)

44

nest g controller users --project=api

45

46

# Dry run to preview changes

47

nest g controller users --dry-run

48

49

# Generate with custom collection

50

nest g controller users --collection=@my/schematics

51

```

52

53

## Available Schematics

54

55

The @nestjs/schematics collection provides the following generators:

56

57

### Core Elements

58

59

```bash { .api }

60

# Application

61

nest g application <name> # Generate a new application (for monorepos)

62

nest g app <name> # Alias for application

63

64

# Library

65

nest g library <name> # Generate a new library (for monorepos)

66

nest g lib <name> # Alias for library

67

```

68

69

### Controllers and Services

70

71

```bash { .api }

72

# Controller

73

nest g controller <name> # Generate a controller class

74

nest g co <name> # Alias for controller

75

76

# Service

77

nest g service <name> # Generate a service class

78

nest g s <name> # Alias for service

79

80

# Provider

81

nest g provider <name> # Generate a provider class

82

nest g pr <name> # Alias for provider

83

```

84

85

### Modules and Structure

86

87

```bash { .api }

88

# Module

89

nest g module <name> # Generate a module class

90

nest g mo <name> # Alias for module

91

92

# Resource (full CRUD)

93

nest g resource <name> # Generate complete CRUD resource

94

nest g res <name> # Alias for resource

95

```

96

97

### Advanced Elements

98

99

```bash { .api }

100

# Middleware

101

nest g middleware <name> # Generate middleware class

102

nest g mi <name> # Alias for middleware

103

104

# Guard

105

nest g guard <name> # Generate guard class

106

nest g gu <name> # Alias for guard

107

108

# Interceptor

109

nest g interceptor <name> # Generate interceptor class

110

nest g in <name> # Alias for interceptor

111

112

# Decorator

113

nest g decorator <name> # Generate decorator function

114

nest g d <name> # Alias for decorator

115

116

# Pipe

117

nest g pipe <name> # Generate pipe class

118

nest g pi <name> # Alias for pipe

119

120

# Filter

121

nest g filter <name> # Generate exception filter class

122

nest g f <name> # Alias for filter

123

```

124

125

### Gateways and Resolvers

126

127

```bash { .api }

128

# Gateway (WebSockets)

129

nest g gateway <name> # Generate WebSocket gateway

130

nest g ga <name> # Alias for gateway

131

132

# Resolver (GraphQL)

133

nest g resolver <name> # Generate GraphQL resolver

134

nest g r <name> # Alias for resolver

135

```

136

137

### Configuration Files

138

139

```bash { .api }

140

# Class

141

nest g class <name> # Generate a basic class

142

nest g cl <name> # Alias for class

143

144

# Interface

145

nest g interface <name> # Generate an interface

146

nest g interface <name> # No alias available

147

```

148

149

## File Generation Patterns

150

151

### Spec Files

152

153

By default, the CLI generates test specification files alongside components:

154

155

```bash

156

# Generates both controller and spec file:

157

nest g controller users

158

# Creates:

159

# - users.controller.ts

160

# - users.controller.spec.ts

161

```

162

163

### Import Handling

164

165

The CLI automatically handles imports and module registration:

166

167

```bash

168

# When generating a controller, it:

169

# 1. Creates the controller file

170

# 2. Updates the parent module to import the controller

171

# 3. Adds the controller to the module's controllers array

172

```

173

174

### Directory Structure

175

176

```bash { .api }

177

# Flat structure (--flat)

178

src/

179

├── users.controller.ts

180

└── users.controller.spec.ts

181

182

# Nested structure (default)

183

src/

184

└── users/

185

├── users.controller.ts

186

└── users.controller.spec.ts

187

```

188

189

## Project Structure Options

190

191

### Monorepo Support

192

193

For monorepo projects, specify the target project:

194

195

```bash { .api }

196

# Generate in specific app/library

197

nest g controller users --project=api-gateway

198

nest g service users --project=shared-lib

199

```

200

201

### Path Specification

202

203

Control exactly where files are generated:

204

205

```bash { .api }

206

# Generate in custom path

207

nest g controller users --path=src/modules/authentication

208

nest g service email --path=src/common/services

209

```

210

211

## Advanced Options

212

213

### Custom File Suffixes

214

215

Customize the suffix used for spec files:

216

217

```bash { .api }

218

# Use custom spec file suffix

219

nest g controller users --spec-file-suffix=test

220

# Creates: users.controller.test.ts instead of users.controller.spec.ts

221

```

222

223

### Skip Import Registration

224

225

Prevent automatic module registration:

226

227

```bash { .api }

228

# Generate without adding to module

229

nest g controller users --skip-import

230

```

231

232

## Resource Generation

233

234

The resource schematic generates a complete CRUD setup:

235

236

```bash { .api }

237

# Generate complete resource

238

nest g resource users

239

240

# Creates:

241

# - users.controller.ts

242

# - users.controller.spec.ts

243

# - users.service.ts

244

# - users.service.spec.ts

245

# - users.module.ts

246

# - dto/create-user.dto.ts

247

# - dto/update-user.dto.ts

248

# - entities/user.entity.ts

249

```

250

251

## Error Handling

252

253

The CLI validates schematic names and provides helpful error messages:

254

255

```bash

256

# Invalid schematic name

257

nest g invalid-schematic users

258

# Lists available schematics in a formatted table

259

```