NestJS 初始化目录结构介绍

82 阅读3分钟

初始化目录结构介绍

使用 nest new nest-demo 命令创建一个新的 NestJS 项目后,会生成一个标准的项目目录结构。以下是各主要目录和文件的简要介绍

nest-demo/
├── dist/                      # 编译后的可运行代码(部署用)
├── node_modules/              # 项目依赖包(由 pnpm 安装)
├── src/                       # 源代码目录(核心开发区域)
│   ├── app.controller.spec.ts # app 控制器的单元测试文件
│   ├── app.controller.ts      # 应用的主控制器(处理 HTTP 请求)
│   ├── app.module.ts          # 应用的根模块(组织控制器、服务等)
│   ├── app.service.ts         # 应用的主服务(业务逻辑)
│   └── main.ts                # 应用入口文件(启动 Nest 应用)
├── test/                      # 集成测试和端到端测试目录
│   ├── app.e2e-spec.ts        # 端到端测试示例
│   └── jest-e2e.json          # E2E 测试的 Jest 配置
├── .gitignore                 # Git 忽略文件配置
├── .prettierrc                # prettierrc 配置文件,用于代码格式化配置(如缩进、引号风格、分号等)
├── eslint.config.mjs          # ESLint 配置文件,用于代码质量与规范配置(如禁止未使用变量、强制类型安全等)
├── nest-cli.json              # Nest CLI 配置文件(如编译选项、monorepo 设置等)
├── package.json               # 项目元数据和依赖管理
├── package-lock.yaml          # 依赖锁定文件
├── README.md                  # 项目说明文档
├── tsconfig.build.json        # 构建时使用的 TypeScript 配置(继承自 tsconfig.json)
└── tsconfig.json              # TypeScript 编译配置

各关键文件/目录详解

dist/

  • 作用:构建输出目录。
  • 内容:运行 pnpm run start:dev 后,TypeScript 源码(src/)会被编译成 JavaScript 并输出到这里。
  • 用途:用于生产环境部署(例如 node dist/main)。
  • 注意:刚创建项目时不存在,需手动构建才会生成。

node_modules/

  • 作用:存放项目所有 第三方依赖包(如 @nestjs/coreexpressrxjs 等)。
  • 来源:由包管理器 pnpm 根据 package.json 安装。
  • 注意:不应提交到 Git(已被 .gitignore 忽略)。

src/

所有应用源代码都放在这里,采用 NestJS 的模块化架构。

src/main.ts

应用入口文件。使用 NestFactory.create() 启动 Nest 应用,并监听端口(如 3000)。

src/app.module.ts

根模块(Root Module)。通过 @Module({}) 装饰器组织控制器(Controllers)、服务(Providers)、导入其他模块等。是整个应用的装配中心。

src/app.controller.ts

默认控制器。处理 HTTP 请求(如 GET /),通过 @Controller() 定义路由。

src/app.service.ts

默认服务。封装业务逻辑(如数据库操作、计算等),通常被控制器注入使用。

src/app.controller.spec.ts

AppController 的 单元测试文件,使用 Jest 编写,用于验证控制器逻辑是否正确。

test/

用于模拟真实用户请求,测试整个应用流程。

test/app-e2e-spec.ts

示例 E2E 测试:启动应用、发送 HTTP 请求、断言响应。

jest-e2e.json

专为 E2E 测试定制的 Jest 配置文件(如测试环境、超时设置等)。

注:单元测试在 src/ 中(如 *.spec.ts),E2E 测试在 test/ 中。

.gitignore

指定 Git 忽略的文件/目录(如 dist/, node_modules/, .env 等),避免提交无关内容。

.prettierrc

Prettier 代码格式化配置(如缩进、引号风格、分号等),保持代码风格统一

eslint.config.mjs

ESLint 的新式配置文件(ESM 格式),用于 代码质量检查与规范(如禁止未使用变量、强制类型安全等)。

nest-cli.json

Nest CLI 的专属配置

package.json

项目元信息 + 依赖声明(dependencies / devDependencies)+ 自定义脚本(如 start, build, test)。

package-lock.yaml

pnpm 生成的依赖锁定文件(注意:npm 生成 package-lock.jsonyarn 生成 yarn.lock)。我用的是 pnpm,所以是 .yaml 格式,确保团队安装完全一致的依赖版本。

README.md

项目说明文档,通常包含启动命令、技术栈介绍等。

tsconfig.json

TypeScript 编译主配置(如 target、module、strict 模式、路径映射等)。

tsconfig.build.json

专用于构建(nest build)的 TS 配置,通常继承 tsconfig.json 并排除测试文件。