# 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?