概述
Nest CLI 是一个命令行界面工具, 帮助您初始化、开发和维护 Nest 应用程序。 它以多种方式提供帮助,包括搭建项目、在开发模式下提供服务,以及为生产分发构建和打包应用程序。 它体现了最佳实践的架构模式,以鼓励构建结构良好的应用程序。
安装
注意:在本指南中,我们使用 npm 安装包,
包括 Nest CLI。您可以自行选择其他包管理器。
使用 npm
时,您可以选择多种选项来管理操作系统命令行解析 nest
CLI 二进制文件的位置。
在这里,我们描述了使用 -g
选项全局安装 nest
二进制文件。
这提供了一定的便利性,并且是我们在整个文档中默认使用的方法。
请注意,全局安装任何 npm
包会将确保运行正确版本的责任留给用户。
这还意味着如果您有不同的项目,每个项目都将运行相同版本的 CLI。
一个合理的替代方案是使用内置于 npm cli
中的
npx
程序(或其他包管理器中的类似功能),以确保运行受管理版本的 Nest CLI。
我们建议您查阅 npx 文档
和/或您的 DevOps 支持人员以获取更多信息。
使用 npm install -g
命令全局安装 CLI(有关全局安装的详细信息,请参见上面的注释)。
npm install -g @nestjs/cli
或者,您可以使用以下命令 npx @nestjs/cli@latest
而无需全局安装 CLI。
基本工作流程
安装完成后 ,您可以通过 nest
可执行文件直接从操作系统命令行调用 CLI 命令。
输入以下命令查看可用的 nest
命令:
nest --help
使用以下结构获取有关单个命令的帮助。
在下面的示例中,将 generate
替换为任何命令(如 new
、add
等),以获取有关该命令的详细帮助:
nest generate --help
要创建、构建并以开发模式运行一个新的基本 Nest 项目,请转到应该是新项目父级的文件夹,并运行以下命令:
nest new my-nest-project
cd my-nest-project
npm run start:dev
在浏览器中打开 http://localhost:3000
,查看新应用程序运行情况。当您更改任何源文件时,应用程序将自动重新编译和重新加载。
我们建议使用 SWC 构建工具 进行更快的构建(比默认的 TypeScript 编译器快 10 倍)。
项目结构
当您运行 nest new
时,Nest 通过创建一个新文件夹并填充一组初始文件来生成一个样板应用程序结构。
您可以继续在此默认结构中工作,按照本文档中描述的方式添加新组件。
我们将 nest new
生成的项目结构称为标准模式。
Nest 还支持一种管理多个项目和库的替代结构,称为单仓库模式。
除了在构建过程中如何工作的一些具体考虑(基本上,单仓库模式简化了可能由单仓库样式项目结构引起的构建复杂性), 以及内置库支持之外,Nest 的其余功能和文档都同样适用于标准和单仓库模式项目结构。 实际上,您可以在将来的任何时候轻松从标准模式切换到单仓库模式, 因此在您仍在了解 Nest 的情况下,可以安全地推迟这个决定。
您可以使用任一模式来管理多个项目。以下是两者之间的快速摘要:
特性 | 标准模式 | 单仓库模式 |
---|---|---|
多个项目 | 分离的文件系统结构 | 单一文件系统结构 |
node_modules 和 package.json | 独立的实例 | 跨单仓库共享 |
默认编译器 | tsc | webpack |
编译器设置 | 分别指定 | 单仓库默认设置,可以在每个项目中进行覆盖 |
配置文件,如 .eslintrc.js 、.prettierrc 等 | 分别指定 | 跨单仓库共享 |
nest build 和 nest start 命令 | 目标默认自动设置为上下文中的(唯一的)项目 | 目标默认设置为单仓库中的默认项目 |
库 | 手动管理,通常通过 npm 打包 | 内置支持,包括路径管理和打包 |
阅读有关工作区 和库的部分, 以获取更详细的信息,帮助您决定哪种模式最适合您。
CLI 命令语法
所有 nest
命令都遵循相同的格式:
nest commandOrAlias requiredArg [optionalArg] [options]
例如:
nest new my-nest-project --dry-run
这里,new
是 commandOrAlias
。
new
命令有一个别名 n
。my-nest-project
是 requiredArg
。
如果在命令行上未提供 requiredArg
,nest
将提示您输入。
此外,--dry-run
具有一个等效的缩写形式 -d
。考虑到这一点,以下命令等效于上面的命令:
nest n my-nest-project -d
大多数命令和一些选项都有别名。
尝试运行 nest new --help
查看这些选项和别名,并确认您对上述结构的理解。