如何在CLI中运行nest-commander创建的NestJS命令?
实现自定义NestJS CLI命令的执行脚本
步骤1:创建独立的CLI入口文件
在src目录下新建cli.ts,作为nest-commander的专属启动入口(和Web服务的main.ts分开):
import { CommandFactory } from 'nest-commander'; import { AppModule } from './app.module'; async function bootstrap() { await CommandFactory.run(AppModule); } bootstrap();
这个文件会通过CommandFactory自动扫描AppModule中注册的所有CLI命令。
步骤2:配置package.json的执行脚本
打开项目根目录的package.json,在scripts字段中添加自定义命令:
"scripts": { "start:dev": "nest start --watch", // 新增自定义命令脚本 "test-command": "ts-node src/cli.ts test" }
ts-node src/cli.ts:开发阶段用ts-node直接运行TS文件,无需提前编译- 末尾的
test要和你在test.command.ts中@Command({ name: 'test' })装饰器里定义的命令名称完全一致。
如果是生产环境(已编译为JS文件),可以改成:
"test-command:prod": "node dist/cli.js test"
步骤3:验证命令执行
直接在终端运行:
yarn run test-command
如果命令需要传参,直接追加在命令后面即可:
yarn run test-command --your-param your-value
额外检查
确保你的TestCommand类已经正确注册到AppModule的providers数组中,或者通过子模块(比如CommandModule)导入到AppModule里,否则CommandFactory无法扫描到该命令。
内容的提问来源于stack exchange,提问作者delete
相关产品推荐
相关产品推荐

