后端运维压测工程:NestJS项目部署与通信机制验证 - 第1节
1.1 使用 CLI 创建项目
NestJS 官方提供了一套强大的 CLI 工具,用于快速搭建项目骨架。执行以下命令即可完成初始化:
npm i -g @nestjs/cli
nest new nest-deploy-demo
cd nest-deploy-demo
CLI 会引导选择包管理器(npm / yarn / pnpm),并自动安装依赖。初始化完成后,项目可直接启动:
npm run start:dev
访问 http://localhost:3000 即可看到 Hello World! 响应。
提示: 使用
--strict 参数可启用 TypeScript 严格模式,适合生产级项目。
1.2 项目目录结构解析
CLI 生成的标准目录结构如下,每个文件/文件夹都有明确的职责:
| 路径 | 类型 | 职责说明 |
|---|---|---|
src/ |
目录 | 应用源代码根目录,所有业务模块、控制器、服务均在此 |
src/main.ts |
文件 | 应用入口,创建 Nest 实例并监听端口 |
src/app.module.ts |
文件 | 根模块,声明全局依赖、控制器、提供者 |
src/app.controller.ts |
文件 | 根控制器,定义路由与请求处理 |
src/app.service.ts |
文件 | 根服务,封装业务逻辑 |
test/ |
目录 | 端到端测试与单元测试文件 |
node_modules/ |
目录 | 依赖包(不纳入版本控制) |
package.json |
文件 | 项目元数据、脚本、依赖声明 |
tsconfig.json |
文件 | TypeScript 编译配置 |
nest-cli.json |
文件 | NestJS CLI 专属配置(编译选项、资源路径) |
关键理解: NestJS 采用模块化架构,
src/ 下的每个功能单元都是一个独立模块,便于后续微服务拆分与部署。
1.3 核心配置文件说明
以下三个配置文件决定了项目的编译、运行与部署行为:
1.3.1 nest-cli.json
NestJS CLI 的专属配置,控制构建输出、资源路径等:
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"deleteOutDir": true
}
}
- sourceRoot:源码根目录,默认
src。 - deleteOutDir:构建前是否清空输出目录,避免残留文件。
- collection:使用的代码生成器集合,默认
@nestjs/schematics。
1.3.2 tsconfig.json
TypeScript 编译配置,影响代码检查与输出:
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "ES2021",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": true,
"noImplicitAny": true,
"strictBindCallApply": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true
}
}
- emitDecoratorMetadata / experimentalDecorators:必须开启,NestJS 依赖装饰器元数据实现依赖注入。
- outDir:编译输出目录,默认
./dist,部署时运行dist/main.js。 - strictNullChecks / noImplicitAny:推荐开启,提升代码健壮性。
1.3.3 package.json
项目元数据与脚本入口:
{
"name": "nest-deploy-demo",
"version": "0.0.1",
"scripts": {
"build": "nest build",
"start": "nest start",
"start:dev": "nest start --watch",
"start:prod": "node dist/main",
"test": "jest"
},
"dependencies": {
"@nestjs/common": "^10.0.0",
"@nestjs/core": "^10.0.0",
"@nestjs/platform-express": "^10.0.0",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.8.0"
},
"devDependencies": {
"@nestjs/cli": "^10.0.0",
"@nestjs/schematics": "^10.0.0",
"@types/node": "^20.0.0",
"typescript": "^5.0.0"
}
}
- scripts.start:prod:生产环境启动命令,直接运行编译后的
dist/main.js。 - reflect-metadata:运行时反射元数据库,NestJS 依赖注入的核心依赖。
- @nestjs/platform-express:默认 HTTP 平台适配器,支持切换为 Fastify。
注意: 部署时务必使用
npm run build 编译,然后通过 node dist/main 启动,不要直接运行 nest start,后者会额外加载 CLI 进程,增加资源开销。
1.4 项目初始化流程总览
下图展示了从 CLI 命令到可运行服务的完整初始化链路:
总结: 初始化阶段的核心产出是
src/ 目录结构、nest-cli.json、tsconfig.json 和 package.json。这四个要素构成了后续模块开发、编译构建与生产部署的基础。理解每个配置项的作用,能有效避免部署阶段的低级错误。