如何在 NestJS CLI 中指定将控制器添加到哪个模块?

Pat*_*nus 3 typescript nestjs

我已经使用 NestJS 玩了大约一个星期。到目前为止,我真的很喜欢它。模块系统很棒。而且,我喜欢做解析请求之类的事情是多么容易。

我确实有一个问题是关于 NestJS CLI。

假设我有多个模块。我可以使用以下命令创建一个控制器。

nest g controller Accounts
Run Code Online (Sandbox Code Playgroud)

如何指定此控制器属于哪个模块?

CLI 似乎默认为您创建的最后一个模块。

我该如何改变这种行为?

Jay*_*iel 12

据我所知,CLI 将查看您是否有任何模块与您正在创建的控制器的名称相匹配。例如,如果您运行

nest g mo accounts
nest g mo contacts
nest g mo leads
Run Code Online (Sandbox Code Playgroud)

然后你对控制器运行相同的,但顺序不同,比如

nest g co leads
nest g co accounts
nest g co contacts
Run Code Online (Sandbox Code Playgroud)

你仍然会得到AccountsControllerin AccountsModuleLeadsControllerinLeadsModuleContactsControllerinContactsModule

如果您希望将特定控制器添加到名称与控制器不同的模块(即添加LeadsControllerAccountsModule),您可以将path选项作为最终参数传递给 CLI,例如

nest g co leads accounts
Run Code Online (Sandbox Code Playgroud)

您提供的路径是相对于的src(或您的根目录在nest-cli.json. 这将创建文件accounts/leads所在的目录,leads.controller.ts并将控制器添加到AccountsModule.

Nest 默认将新类添加到同名模块中的原因是为了便于功能模块开发。不需要指定模块使 CLI 的使用对开发人员(通常)更加友好,作为后备,如果找不到模块,CLI 会将其添加到AppModule(或任何您调用的根模块)。


小智 8

如果模块已经存在,您只需在控制器/服务后面添加其名称(否则..)

nest generate controller <controller_name> <module_name> [--flat]
Run Code Online (Sandbox Code Playgroud)

“--flat”选项,如果您不想为控制器生成新文件夹