# CLI
## 概述
[Nest CLI](https://github.com/nestjs/nest-cli)是一个命令行界面工具,以帮助您初始化、开发和维护 `Nest` 应用程序。它以多种方式提供帮助,包括搭建项目、以开发模式为其提供服务,以及为生产分发构建和打包应用程序。它体现了最佳实践的架构模式,以构建良好的应用程序。
### 安装
注意:在本指南中,我们描述了如何使用 [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) 来安装包,包括 `Nest CLI`。您可以自行决定是否使用其他包管理器。使用 `npm`,您可以使用几个选项来管理操作系统命令行如何解析 `nest CLI` 二进制文件的位置。在这里,我们描述了使用 `-g` 选项全局安装 `nest` 二进制文件。这提供了一种方便方法,也是我们在整个文档中所采用的方法。请注意,全局安装任何`npm` 包将确保运行正确版本的责任留给了用户。这还意味着,如果您有不同的项目,每个项目将运行相同版本的 `CLI` 。一个合理的替代方法是使用 [npx](https://github.com/npm/npx) 程序(或与其他包管理器类似的特性)来确保运行托管版本的 `Nest CLI` 。我们建议您参考 `npx` 文档或您的 `DevOps` 支持人员以获得更多信息。
使用 `npm Install -g` 命令全局安装 `CLI` (有关全局安装的详细信息,请参阅上面的说明)。
使用 **NPM** 安装 CLI:
```bash
$ npm install -g @nestjs/cli
```
### 基本工作流程
安装过程完成后,您应该能够通过 `nest` 可执行文件直接从命令行调用 `CLI` 命令。
```bash
$ nest --help
```
使用以下结构获取有关单个命令的帮助。 替换任何命令,例如 `new` ,`add` 等,在下面的示例中看到的 `generate` 可以获取有关该命令的详细帮助:
```bash
$ nest generate --help
```
要在开发模式下创建、构建和运行新的基本 `Nest` 项目,请转到父项目的文件夹下,并运行以下命令:
```bash
$ nest new my-nest-project
$ cd my-nest-project
$ npm run start:dev
```
在浏览器中,打开 `http://localhost:3000` 查看新应用程序的运行情况。当您更改任何源文件时,应用程序将自动重新编译和重新加载。
### 项目结构
当您运行 `nest new` 时,`nest` 通过创建一个新文件夹并填充一组初始文件来生成一个样板应用程序结构。您可以继续在这个默认结构中工作,添加新的组件,如本文档所述。我们将 `nest new` 生成的项目结构称为标准模式。`Nest` 还支持一种名为 `monorepo` 模式的替代结构,用于管理多个项目和库。
除了一些特定的因素在构建过程是如何工作的(实际上, `monorepo` 模式简化了构建复杂性,有时来自 `monorepo-style` 项目结构),和内置库支持,其余的巢特性,这个文档,同样适用于标准和 `monorepo` 模式项目结构。事实上,您可以在将来的任何时候轻松地从标准模式切换到 `monorepo` 模式,因此您可以在学习 `Nest` 时使用。
您可以使用任何一种模式来管理多个项目。这里是一个快速的差异总结:
| 功能 | 标准模式 | `Monorepo` 模式|
|---|---|---|
|多个项目| 独立文件系统结构 | 单文件系统结构 |
| `node_modules` 和 `package.json` | 单独的实例 | 跨 `monorepo`共享 |
| 默认的编译器 | `tsc` | `webpack` |
| 编译器设置 | 分别指定 | `Monorepo` 默认值,每个项目都可以覆盖它 |
| `tslint.json`,`.prettierrc` 等配置文件| 分别指定 | 跨 `monorepo` 共享 |
| `nest build` 和 `nest start` 命令| 目标自动默认为上下文中的(仅)项目 | 目标默认为 `monorepo` 中的默认项目|
| 库 | 手动管理,通常通过 `npm` 打包 | 内置支持,包括路径管理和绑定 |
阅读有关 `Workspaces` 和 `Libraries` 的部分,以获取更多详细信息,以帮助您确定最适合您的模式。
### CLI 命令语法
所有的 `nest` 命令都遵循相同的格式:
```bash
nest commandOrAlias requiredArg [optionalArg] [options]
```
例如:
```bash
$ nest new my-nest-project --dry-run
```
在这里,`new` 是命令或别名。 新命令的别名为n. `my-nest-project` 是必需的参数。 如果命令行上未提供所需的参数,则 `nest` 将提示您输入。 同样,`--dry-run` 也有一个类似的简写形式 `-d` 。 考虑到这一点,以下命令与上面的命令等效:
```bash
$ nest n my-nest-project -d
```
大多数命令和一些选项都有别名。尝试运行 `nest new --help` 查看这些选项和别名,并确认您对上述构造的理解。
### 命令概述
运行`nest <command> --help` 查看帮助,查看特定于命令的选项。
有关每个命令的详细描述,请参见用法。
|命令 | 别名 | 描述|
|---|---|---|
| `new` | `n` | 搭建一个新的标准模式应用程序,包含所有需要运行的样板文件。|
| `generate` | `g` | 根据原理图生成或修改文件。 |
| `build` || 将应用程序或 `workspace` 编译到输出文件夹中。|
| `start` || 编译并运行应用程序(或 `workspace` 中的默认项目)。 |
| `add` || 导入已打包为`nest`的库,运行其安装示意图。|
| `update`|`u`| 更新包中的 `@nestjs` `package.json ` `dependencies` 列表的 `@latest` 版本。|
| `info` |`i`| 现实已安装的`nest`包和其他有用的系统信息。|
- 介绍
- 概述
- 第一步
- 控制器
- 提供者
- 模块
- 中间件
- 异常过滤器
- 管道
- 守卫
- 拦截器
- 自定义装饰器
- 基础知识
- 自定义提供者
- 异步提供者
- 动态模块
- 注入作用域
- 循环依赖
- 模块参考
- 懒加载模块
- 应用上下文
- 生命周期事件
- 跨平台
- 测试
- 技术
- 数据库
- Mongo
- 配置
- 验证
- 缓存
- 序列化
- 版本控制
- 定时任务
- 队列
- 日志
- Cookies
- 事件
- 压缩
- 文件上传
- 流式处理文件
- HTTP模块
- Session(会话)
- MVC
- 性能(Fastify)
- 服务器端事件发送
- 安全
- 认证(Authentication)
- 授权(Authorization)
- 加密和散列
- Helmet
- CORS(跨域请求)
- CSRF保护
- 限速
- GraphQL
- 快速开始
- 解析器(resolvers)
- 变更(Mutations)
- 订阅(Subscriptions)
- 标量(Scalars)
- 指令(directives)
- 接口(Interfaces)
- 联合类型
- 枚举(Enums)
- 字段中间件
- 映射类型
- 插件
- 复杂性
- 扩展
- CLI插件
- 生成SDL
- 其他功能
- 联合服务
- 迁移指南
- Websocket
- 网关
- 异常过滤器
- 管道
- 守卫
- 拦截器
- 适配器
- 微服务
- 概述
- Redis
- MQTT
- NATS
- RabbitMQ
- Kafka
- gRPC
- 自定义传输器
- 异常过滤器
- 管道
- 守卫
- 拦截器
- 独立应用
- Cli
- 概述
- 工作空间
- 库
- 用法
- 脚本
- Openapi
- 介绍
- 类型和参数
- 操作
- 安全
- 映射类型
- 装饰器
- CLI插件
- 其他特性
- 迁移指南
- 秘籍
- CRUD 生成器
- 热重载
- MikroORM
- TypeORM
- Mongoose
- 序列化
- 路由模块
- Swagger
- 健康检查
- CQRS
- 文档
- Prisma
- 静态服务
- Nest Commander
- 问答
- Serverless
- HTTP 适配器
- 全局路由前缀
- 混合应用
- HTTPS 和多服务器
- 请求生命周期
- 常见错误
- 实例
- 迁移指南
- 发现
- 谁在使用Nest?