nestjs 的项目启动

当启动项目时,yarn****先找 package.json**,然后** package.json****里配置的命令(通常是 nest**)再去召** nest-cli.json**。**

这是一个**"层层传达"**的过程。我们可以把它拆解为 4 个步骤,这样你就完全理解了:

1. 第一步:Yarn 查阅"菜单" (package.json)

当你输入 yarn start 时,Yarn 根本不认识 nest-cli.json。它只认识当前目录下的 package.json。 它会去 package.json"scripts" 部分查找 start 对应的命令是什么。

通常是这样的:

JSON

复制代码
// package.json
"scripts": {
   "start": "nest start" 
}

Yarn 看到后说:"好,你要我执行 nest start。"

2. 第二步:唤醒工头 (nest 命令行工具)

Yarn 启动了 nest 这个工具。 此时, nest****工具醒了。 它准备开始干活(编译并运行代码),但它不知道你的代码在哪里,也不知道你想怎么编译。

3. 第三步:工头看图纸 (nest-cli.json) ------ 关键步骤

这就是你问的环节。nest****工具启动后的第一件事,就是去根目录找 nest-cli.json**。**

它通过读取这个文件来回答以下问题:

  • "入口文件是默认的 main.ts**吗?" -> 不是 ,配置里写了是 bin/start-server
  • "源码在哪里?" -> 在 src 目录下。
  • "用什么工具编译?" -> 配置里写了 builder: swc,所以我要启动 SWC 编译器,而不是普通的 TS 编译器。

4. 第四步:执行编译与启动

根据第三步拿到的"图纸",nest 工具开始操作:

  1. 找到 src/bin/start-server.ts
  2. 使用 SWC 极速编译成 JavaScript。
  3. 输出到 dist 目录。
  4. 最后使用 Node.js 运行编译后的文件。

总结图示

为了方便记忆,你可以看这个流程链:

  1. (yarn start) ↓
  2. Yarn (读取 package.json) ↓
  3. Nest Binary (执行 nest start) ↓
  4. Nest CLI Config (读取 nest-cli.json 获取配置) ↓
  5. Compiler (根据配置找到 bin/start-server 并编译)

结论: nest-cli.json****是项目启动逻辑的"大脑" ,虽然它不是第一个被读取的文件(第一个是 package.json),但它是决定项目如何被读取和运行的关键文件。

如果删掉了 nest-cli.json,你的 yarn start 可能会报错,或者因为它试图去默认的 src/main.ts 找入口文件而找不到(因为你的入口改成了 bin/start-server)。

相关推荐
dyb-dev16 小时前
我是如何学习 NestJS 的
前端·nestjs·全栈
全栈王校长2 天前
Nest 中间件 Middleware - 就像 Vue 的路由守卫
后端·nestjs
全栈王校长2 天前
Nest ValidationPipe 参数验证 - 就像前端的表单校验
后端·nestjs
onebyte8bits4 天前
NestJS 系列教程(十七):异步任务与消息队列(Bull + Redis 企业级实战)
前端·数据库·redis·缓存·nestjs
onebyte8bits4 天前
NestJS 系列教程(十八):文件上传与对象存储架构(Multer + S3/OSS + 访问控制)
前端·架构·node.js·状态模式·nestjs
全栈王校长11 天前
Nest IoC 依赖注入 - 一次彻底讲明白
nestjs
全栈王校长11 天前
前端转后端?用 Vue 的思维学 NestJS,真香!
nestjs
当时只道寻常11 天前
NestJS Redis 原子限流守卫 防刷防攻击
后端·nestjs
踩着两条虫11 天前
VTJ.PRO 在线应用开发平台的Open API 与外部集成
低代码·ai编程·nestjs
www_stdio12 天前
🚀 从 Event Loop 到 AI Agent:我的 Node.js 全栈进阶之路
前端·node.js·nestjs