🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 脚本 ### Nest CLI和 scripts 本节提供有关 `nest`命令如何与编译器和脚本交互以帮助 `DevOps` 人员管理开发环境的其他背景。 Nest应用程序是标准的 `TypeScript` 应用程序,需要先将其编译为 `JavaScript` 才能执行。有多种方法可以完成编译步骤,并且开发人员/团队可以自由选择最适合他们的方法。考虑到这一点,`Nest` 提供了一系列开箱即用的工具,它们旨在执行以下操作: - 提供在命令行上可用的标准构建/执行过程,该过程“合理”且具有合理的默认值。 - 确保构建/执行过程是开放的,以便开发人员可以直接访问基础工具以使用本机功能和选项对其进行自定义。 - 保留一个完全标准的 `TypeScript` / `Node.js` 框架,以便可以由开发团队选择使用的任何外部工具来管理整个编译/部署/执行。 通过结合使用 `nest` 命令,本地安装的 `TypeScript` 编译器和 `package.json` 脚本来实现此目标。我们在下面描述这些技术如何协同工作。这应该有助于您了解在构建/执行过程的每个步骤中发生了什么,以及在必要时如何自定义该行为。 ### Nest 二进制 `nest` 命令是操作系统级别的二进制文件(即从OS命令行运行)。 该命令实际上包含3个不同的区域,如下所述。 我们建议您通过包运行构建( `nest build` )和执行( `nest start` )子命令。当一个项目被搭建时,会自动提供 `json` 脚本如果您希望通过克隆仓库而不是运行仓库来启动,请参见 [typescript starter](https://github.com/nestjs/typescript-starter))。 ### Build `nest build` 是标准 `tsc` 编译器(用于标准项目)或 `webpack` 编译器(用于 `monorepos` )之上的包装器。它不添加任何其他编译特性或步骤。它存在的原因是,大多数开发人员,特别是在开始使用 `Nest` 时,不需要调整编译器选项((例如 `tsconfig.json` 文件)。 有关更多细节,请参见 `nest build`文档。 ### Execution `nest start` 只是确保已构建项目(与 `nest build` 相同),然后以可移植,简单的方式调用 `node` 命令以执行已编译的应用程序。 与构建一样,您可以根据需要自由定制此过程,可以使用 `nest start` 命令及其选项,也可以完全替换它。 整个过程是标准的 `TypeScript` 应用程序构建和执行管道,您可以自由地管理过程。 有关更多详细信息,请参见 `nest start` 文档。 ### Generation `nest` 生成命令,顾名思义,生成新的 `nest` 项目或其中的组件。 ### Package scripts 在 `OS` 命令级别运行 `nest` 命令需要全局安装 `nest` 二进制文件。这是 `npm` 的标准特性,不受 `Nest` 的直接控制。这样做的一个后果是,全局安装的 `nest` 二进制文件在 `package.json` 中没有作为项目依赖项进行管理。例如,两个不同的开发人员可以运行两个不同版本的 `nest` 二进制代码。对此的标准解决方案是使用 `Package` 脚本,以便您可以将构建中使用的工具和执行步骤视为开发依赖项。 运行 `nest new` 或克隆 `typescript starter` 时,`nest` 将填充新项目的包。`Nest` 使用诸如 `build` 和 `start` 之类的命令填充新项目的 `package.json` 脚本。 它还将基础编译器工具(例如 `Typescript` )安装为 `dev` 依赖项。 你运行构建和执行脚本的命令如下: ```bash $ npm run build ``` 和 ```bash $ npm run start ``` 这些命令使用 `npm` 的脚本运行功能来执行 `nest` 构建,或者使用本地安装的 `nest` 二进制文件启动 `nest`。通过使用这些内置的包脚本,您可以对 `Nest CLI` 命令*进行完全的依赖管理。这意味着,通过遵循建议的用法,可以确保组织的所有成员都可以运行相同版本的命令。 这适用于构建和启动命令。`nest new` 和 `nest generate` 命令不属于 `build/execute` 管道的一部分,因此它们在不同的上下文中操作,并且不附带内置 `package.json` 脚本。 对于大多数开发人员/团队,建议使用包脚本来构建和执行他们的 `Nest` 项目。您可以通过这些脚本的选项(`—path`、`—webpack`、`—webpackPath`)或根据需要定制 `tsc` 或 `webpack` 编译器选项文件(例如,`tsconfig.json` )来完全定制这些脚本的行为。您还可以自由地运行一个完全定制的构建过程来编译 `TypeScript` (甚至可以直接使用 `ts-node` 执行 `TypeScript` )。 ### 向后兼容性 因为 `Nest` 应用程序是纯 `TypeScript` 应用程序,所以以前版本的 `Nest` 构建/执行脚本将继续运行。您不需要升级它们。您可以选择在准备好时利用新的 `nest build` 和 `nest start` 命令,或者继续运行以前的或定制的脚本。 ### 迁移 虽然不需要进行任何更改,但您可能希望使用新的 `CLI` 命令进行迁移,而不是使用诸如 `tsc-watch` 或 `ts-node` 之类的工具。在这种情况下,只需在全局和本地安装最新版本的 `@nestjs/cli`: ```bash $ npm install -g @nestjs/cli $ cd /some/project/root/folder $ npm install -D @nestjs/cli ``` 然后,您可以用以下脚本替换 `package.json` 中定义的脚本: ```bash "build": "nest build", "start": "nest start", "start:dev": "nest start --watch", "start:debug": "nest start --debug --watch", ```