此文主要介绍 Nest.js 常用的命令和选项:
使用 nest cli 创建新项目
npm install -g @nestjs/cli
nest new 项目名
npm update -g @nestjs/cli
nest 提供的命令:
创建新项目的 nest new,创建某些代码的 nest generate,打包的 nest build,开发模式的 nest start
nest new 选项:
- –directory:指定新项目的目录名。
- –dry-run 或 -d:运行命令但不创建项目文件,这可以用来预览将要执行的操作。
- –skip-git 或 -g:跳过初始化 git 仓库
- –skip-install:跳过 npm install
- –package-manager 指定包管理器
- –language 指定 typescript 和 javascript,默认的 ts
- –strict 指定 ts 的编译选项是否开启严格模式,默认是 false
如果你想要创建一个新的 Nest.js 项目并指定使用 yarn 而不是 npm 来安装依赖,你可以执行以下命令:
nest new project-name --package-manager yarn
如果你想要预览将要创建的项目结构,而不实际生成文件,你可以使用 –dry-run 选项:
nest new project-name --dry-run
运行项目
使用 nest start 命令,它有这些选项:
- –watch:启用热重载模式。在这种模式下,应用程序会在检测到源代码变化时自动重新编译和重启。
- –watchAssets:在热重载模式下,监视静态资源的变化。
- –debug:以调试模式启动应用程序
- –preserveWatchOutput:在热重载模式下,保留控制台输出的历史记录,而不是在每次重新编译时清除它
- –exec 可以指定用什么来跑,默认是用 node 跑,你也可以切换别的 runtime。
生成资源
nest 命令除了生成整个项目,Nest.js CLI 允许你快速生成各种资源,比如 controllers, providers, modules 等。资源通常指的是与特定业务逻辑相关的模块
使用 nest generate :
- 是文件类型,可以是以下选项之一:
- module: 生成新的模块。
- controller: 生成新的控制器。
- service: 生成新的服务。
- filter:生成新的过滤器。
- middleware: 生成新的中间件。
- interceptor 生成新的拦截器
- guard: 生成新的守卫。
- decorator:生成新的装饰器。
- pipe: 生成新的管道。
- resolver: 生成新的解析器(GraphQL)。
- 是文件的名称。
生成新模块:
nest generate module module-name
它会生成 module 的代码,并在 AppModule 里引入。
生成 controller、service 等代码:
nest generate controller controller-name
nest generate service service-name
生成完整模块代码:
nest generate resource resource-name
一般我们选择 http 的 REST 风格 api:
然后会让你选择是否生成 CRUD 代码:
最后会生成整个模块的 CRUD + REST api 的代码,BbbModule 同样会自动在 AppModule 引入。
这些代码模版的集合是在 @nestjs/schematics
这个包里定义的,它们的实现原理很简单,就是模版引擎填充变量,打印成代码。
其实 nest new 的底层就是 nest generate application,只不过 nest new 额外做了 git init 和 npm install 等处理。
nest generate 也有不少选项:
- –dry-run 或 -d: 运行命令但不创建任何文件,这可以用来预览将要执行的操作
- –flat 和 –no-flat 是指定是否生成对应目录的。
- –no-spec: 防止生成测试文件 (*.spec.ts)。
- –skip-import 是指定不在 AppModule 里引入。
- –project,在多项目工作区中指定运行在特定的项目。
打包项目
执行 nest build,会在 dist 目录下生成编译后的代码。
- –wepback 和 –tsc 指定用什么编译
- 默认是 tsc 编译,也可以切换成 webpack。
- tsc 不做打包、webpack 会做打包,两种方式都可以。
- node 模块本来就不需要打包,但是打包成单模块据说能提升加载的性能。
- –watch 是监听文件变动,自动 build 。
- –watch 默认只是监听 ts、js 文件,加上 –watchAssets 会连别的文件一同监听变化,并输出到 dist 目录,比如 md、yml 等文件。
- –path 是指定 tsc 配置文件的路径的。
- –config 是指定 nest cli 的配置文件。
nest-cli.json 文件
上面的选项基本都可以在 nest-cli.json 里配置。nest-cli.json
文件是 Nest.js 项目的配置文件,用于定义和调整 Nest CLI 工具的行为,这个文件通常在根目下。
- compilerOptions:
- deleteOutDir: 在编译前删除输出目录(通常是 dist)。
- sourceRoot: 指定源代码的根目录。
- tsConfigPath: 指向 tsconfig 文件的路径。
- assets: 指定需要在构建时一同复制到输出目录的静态资源或文件夹。
- watchAssets: 在使用 –watch 标志时,监视 assets 中指定的静态资源的变化。
- collection:
指定使用的默认 Schematics 集合。Schematics 是用于生成文件的模板。 - monorepo:
指示是否在一个单一的仓库(monorepo)中管理多个项目。 - projects:
在一个 monorepo 中,你可以定义多个项目(如应用程序和库),每个项目可以有自己的配置选项。- 每个项目可以包括 type、root、entryFile、sourceRoot 和 compilerOptions 等配置。
. generateOptions:
为 nest generate 命令设置默认的生成选项,如是否自动创建测试文件。
- 每个项目可以包括 type、root、entryFile、sourceRoot 和 compilerOptions 等配置。
- sourceRoot
指定源码目录。
- entryFile
指定入口文件的名字,默认是 main。
- $schema
指定 nest-cli.json 的 schema,也就是可以配置哪些属性:json.schemastore.org/nest-cli
其他命令
nest info 命令可以查看项目信息,包括系统信息、 node、npm 和依赖版本:
nest add <package>
:安装并添加一个新的 Nest.js 包,其中 <package>
是要安装的包的名称。
nest update:更新 Nest.js 应用程序的依赖包。
原文链接:https://juejin.cn/post/7338265878288515135 作者:云牧牧