1.新建nest项目
- 未全局安装nest
// 使用npx安装,会首先将nest下载下来,然后进行安装,这样每次拿到的都是最新的nest版本,但是总是会从远程下载
npx @nestjs/cli new projectName
- 已经在本地全局安装了nest
// 全局安装nest
npm install @nestjs/cli -g
// 新建项目
nest new projectName
这种创建项目的方法需要对nest版本进行升级,以便于创建的nest项目版本是最新的。
升级nest版本命令:
npm update @nestjs/cli -g
2.nest命令
使用nest -h
可以查看到nest
都提供了哪些命令:
命令名称 | 简写 | 描述 |
---|---|---|
application | application | 生成一个新的应用nest new xxx |
class | cl | 生成一个class类nest generate|g class calssname --flat |
configuration | config | 生成一个nest-cliconfig 配置,默认创建项目时会存在 |
controller | co | 生成一个控制器声明, nest generate|g co xx , 会自动注入 |
decorator | d | 生成一个自定义的装饰器,nest g d aa --flat |
filter | f | 生成一个过滤器, nest g f aa |
gateway | ga | 生成一个网关类, nest g ga aa --flat |
guard | gu | 生成一个守卫,nest g gu aa |
interceptor | itc | 生成拦截器,nest g itc aa |
interface | itf | 生成一个接口,nest g itf aaa |
library | lib | 生成一个新的library |
middleware | mi | 生成一个新的中间件 |
module | mo | 在xx文件下生成module 模块,nest generate|g module xx ,该模块会在app.module 中自动注入 |
pipe | pi | 生成一个pipe |
provider | pr | 生成一个provider |
resource | res | 生成一个完整模块的代码,不需要一个个生成,nest g res xxx , 同样生成后会在app.module.ts 中注入 |
resolver | r | Generate a GraphQL resolver declaration |
service | s | 生成一个service, 会自动注入 |
sub-app | app | 在单线程内生成一个新的应用程序 |
3. nest new
选项
控制台输入nest new -h
后,打印出可用选项
命令名称 | 描述 |
---|---|
--directory [directory] | 指定目标目录 |
-d, --dry-run | 报告将在不写出结果的情况下执行的操作。(默认值:false) |
-g, --skip-git | 跳过git存储库初始化。(默认值:false) |
-s, --skip-install | 跳过包安装。(默认值:false) |
-p, --package-manager [packageManager] | 指定包管理器。nest new project -p npm |
-l, --language [language] | 要使用的编程语言(TypeScript或JavaScript)(默认:"TypeScript")。nest new project -l JavaScrip |
-c, --collection [collectionName] | 要使用的Schematics集合(默认值:"@nestjs/ Schematics ") |
--strict | 在TypeScript中启用严格模式。(默认值:false) |
-h, --help | 帮助信息 |
常用
--skip-git
: 跳过git的初始化--skip-install
: 跳过依赖包安装--package-manager
: 指定包管理器,如npm、yarn、pnpm等--language
: 可以指定 typescript 和 javascript,默认是ts--strict
: 是指定 ts 的编译选项是否开启严格模式的,就是下面5个选项
4. nest generate
选项
命令名称 | 描述 |
---|---|
-d, --dry-run | 报告将要采取的行动而不写出结果 |
-p, --project [project] | 要在其中生成文件的项目 |
--flat | 指定不生成对应目录 |
--no-flat | 强制生成目录 |
--spec | 指定生成测试文件,默认生成 |
--spec-file-suffix [suffix] | 对规范文件使用自定义后缀。 |
--skip-import | 是指定不在 AppModule 里引入(默认值:false) |
--no-spec | 指定不生成测试文件 |
-c, --collection [collectionName] | 要使用的原理图集合 |
5. nest build
选项
控制台输入nest build -h
打印出可用选项
命令名称 | 描述 |
---|---|
-c, --config [path] | nest-cli配置文件路径 |
-p, --path [path] | tsconfig文件的路径 |
-w, --watch | 在监视模式下运行(实时加载) |
-b, --builder [name] | 要使用的构建器(tsc, webpack, swc)在观察模式下运行(live-reload) |
--watchAssets | 注意非ts(例如,.graphql)文件模式 |
--webpack | 使用webpack进行编译(已弃用选项,请使用——builder代替) |
--type-check | 启用类型检查(当使用SWC时) |
--webpackPath [path] | webpack配置的路径 |
--tsc | 使用typescript编译器进行编译 |
--preserveWatchOutput | 使用tsc手表模式时,使用“preserveWatchOutput”选项 |
- --wepback 和 --tsc 是指定用什么编译,默认是 tsc 编译,也可以切换成 webpack
- weback产物:统一打包到一个main.js中
nest bduild --webpack
- tsc默认打包产物
- weback产物:统一打包到一个main.js中
- --watch监听文件变动,自动 build 的
- --path指定tsc配置文件路径
- --config指定nest-cli.json配置文件
nest-cli.json配置文件解释
- compilerOptions下的webpack为true: 相当于
nest build --webpack
, 设置为false的时候就用tsc。 - deleteOutDir: 是否每次build都清空dist目录
- generateOptions下的spec: 是否生成测试文件,这个配置之后在项目中创建模块的时候就不需要带该参数了
- generateOptions下的flat: 创建模块时是否平铺,这个配置之后在项目中创建模块的时候就不需要带该参数了
6. nest start
选项
控制台输入nest start -h
命令名称 | 描述 |
---|---|
-c, --config [path] | nest-cli配置文件路径 |
-p, --path [path] | tsconfig文件的路径 |
-w, --watch | 在监视模式下运行(实时加载) |
-b, --builder [name] | 要使用的构建器(tsc, webpack, swc)在观察模式下运行(live-reload) |
--watchAssets | 注意非ts(例如,.graphql)文件模式 |
-d, --debug [hostport] | 在调试模式下运行(带——inspect标志) |
--webpack | 使用webpack进行编译(已弃用选项,请使用——builder代替) |
--webpackPath [path] | webpack配置的路径 |
--type-check | 启用类型检查(当使用SWC时) |
--tsc | 使用typescript编译器进行编译 |
--sourceRoot [sourceRoot] | 指向标准模式结构中单个项目的源代码根,或单模式结构中默认项目的源代码根 |
--entryFile [entryFile] | 该命令将使用的条目文件的路径。默认是在Nest的CLI配置文件中定义的。 |
-e, --exec [binary] | 二进制运行(默认:"node")。 |
--preserveWatchOutput | 使用tsc手表模式时,使用“preserveWatchOutput”选项 |
- --watch: 改动文件之后自动重新 build
- --debug: 启动调试的 websocket 服务,用来 debug
- --exec: 可以指定用什么来跑,默认是用 node 跑,也可以切换别的 runtime
nest info
: 查看项目信息的,包括系统信息、 node、npm 和依赖版本。
备注
这是我学习用来自己再实现一次刷熟练度的地方,原文是光神写的小册《Nest通关秘籍》