第 167 章:环境搭建
学习目标
- 安装 Node.js 20 和 pnpm
- 用 CLI 创建第一个 NestJS 项目
- 理解项目结构
- 启动开发服务器
一、Node.js 安装
bash
# 下载:https://nodejs.org (选 20 LTS)
node -v # v20.x.x
npm -v
# 配置国内镜像
npm config set registry https://registry.npmmirror.com二、pnpm 安装
bash
npm install -g pnpm
pnpm -v
pnpm config set registry https://registry.npmmirror.com三、VSCode 插件
| 插件 | 作用 |
|---|---|
| NestJS Files | 模板文件生成 |
| ESLint | 代码规范 |
| Prettier | 格式化 |
| TypeScript | TS 支持 |
| Path Intellisense | 路径补全 |
| Jest | 测试支持 |
| REST Client | 调试 API |
四、创建项目
4.1 用 CLI(推荐)
bash
# 全局安装
npm i -g @nestjs/cli
# 创建项目(默认用 npm,可指定 pnpm)
nest new my-app --package-manager pnpm
# 进入
cd my-app
# 启动
pnpm run start:dev
# 打开 http://localhost:30004.2 不用 CLI
bash
mkdir my-app
cd my-app
pnpm init
pnpm add @nestjs/common @nestjs/core @nestjs/platform-express reflect-metadata rxjs五、项目结构
my-app/
├── src/
│ ├── app.controller.ts # 控制器
│ ├── app.controller.spec.ts # 控制器测试
│ ├── app.module.ts # 根模块
│ ├── app.service.ts # 服务
│ └── main.ts # 入口
├── test/
│ ├── app.e2e-spec.ts # E2E 测试
│ └── jest-e2e.json
├── nest-cli.json # NestJS CLI 配置
├── tsconfig.json
├── tsconfig.build.json
├── package.json
└── README.md六、核心文件
6.1 main.ts(入口)
typescript
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// 全局验证管道
app.useGlobalPipes(new ValidationPipe({
whitelist: true,
transform: true,
}));
// 监听端口
await app.listen(3000);
console.log('Server running at http://localhost:3000');
}
bootstrap();6.2 app.module.ts(根模块)
typescript
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}6.3 app.controller.ts
typescript
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}6.4 app.service.ts
typescript
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello NestJS!';
}
}七、常用命令
bash
# 开发(热重载)
pnpm run start:dev
# 生产
pnpm run build
pnpm run start:prod
# 测试
pnpm run test # 单元测试
pnpm run test:e2e # E2E 测试
pnpm run test:cov # 覆盖率
# 代码规范
pnpm run lint
pnpm run format
# 生成代码
nest g controller users
nest g service users
nest g module users八、调试
8.1 VSCode launch.json
json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "NestJS",
"runtimeExecutable": "pnpm",
"runtimeArgs": ["run", "start:dev"],
"console": "integratedTerminal"
}
]
}8.2 断点调试
start:dev 默认开启 inspect,VSCode 直接 F5 即可。
九、本章小结
| 步骤 | 命令 |
|---|---|
| 安装 CLI | npm i -g @nestjs/cli |
| 创建项目 | nest new my-app |
| 启动开发 | pnpm run start:dev |
| 生成模块 | nest g module users |
动手练习
- 安装 NestJS CLI
- 创建 my-app 项目
- 启动看
Hello NestJS! - 用
nest g controller test生成一个 test 控制器 - 在 test.controller.ts 加
@Get()返回你的名字
推荐阅读
- 📖 NestJS CLI
- 📖 项目结构
下一章:第 168 章:第一个 NestJS 应用 →