Di chuyển từ NestJS
Orbit cung cấp công cụ di chuyển để giúp bạn chuyển đổi từ các dự án NestJS.
Di chuyển tự động
Phân tích dự án của bạn
Đầu tiên, phân tích dự án của bạn để kiểm tra tính tương thích:
bash
orbit migrate analyze ./my-nestjs-appLệnh này sẽ hiển thị:
- Các phụ thuộc của NestJS và các tương đương trong Orbit
- Các file TypeScript cần cập nhật
- Các mục cần xem xét thủ công
Chạy di chuyển
Di chuyển dự án của bạn:
bash
# Xem trước thay đổi (chạy thử)
orbit migrate ./my-nestjs-app --dry-run
# Áp dụng thay đổi
orbit migrate ./my-nestjs-appCông cụ di chuyển sẽ:
- Cập nhật các câu lệnh nhập từ
@nestjs/*sang@galaxy-stack/orbit-* - Thay đổi
NestFactorythànhBunFactory - Cập nhật các phụ thuộc trong
package.json - Tạo các file sao lưu (
.bak)
Chỉ cập nhật nhập
Nếu bạn muốn chỉ cập nhật phần nhập:
bash
orbit migrate imports ./my-nestjs-appÁnh xạ nhập
| NestJS | Orbit |
|---|---|
@nestjs/common | @galaxy-stack/orbit-common |
@nestjs/core | @galaxy-stack/orbit-core |
@nestjs/config | @galaxy-stack/orbit-config |
@nestjs/graphql | @galaxy-stack/orbit-graphql |
@nestjs/microservices | @galaxy-stack/orbit-microservices |
@nestjs/websockets | @galaxy-stack/orbit-websockets |
@nestjs/schedule | @galaxy-stack/orbit-schedule |
@nestjs/terminus | @galaxy-stack/orbit-terminus |
@nestjs/throttler | @galaxy-stack/orbit-throttler |
@nestjs/jwt | @galaxy-stack/orbit-auth |
@nestjs/passport | @galaxy-stack/orbit-auth |
@nestjs/cache-manager | @galaxy-stack/orbit-cache |
@nestjs/swagger | @galaxy-stack/orbit-swagger |
@nestjs/testing | @galaxy-stack/orbit-testing |
@nestjs/platform-express | @galaxy-stack/orbit-platform-bun |
@nestjs/platform-fastify | @galaxy-stack/orbit-platform-bun |
Di chuyển thủ công
Cơ sở dữ liệu (TypeORM → Drizzle)
Orbit sử dụng Drizzle ORM thay vì TypeORM:
typescript
// Trước (TypeORM)
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
}
// Sau (Drizzle)
import { pgTable, serial, text } from 'drizzle-orm/pg-core';
export const users = pgTable('users', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
});Mẫu Repository:
typescript
// Trước (TypeORM)
@InjectRepository(User)
private userRepository: Repository<User>
// Sau (Drizzle)
@InjectDatabase()
private db: Database
async findAll() {
return this.db.select().from(users);
}Xác thực (Passport → @galaxy-stack/orbit-auth)
typescript
// Trước (Passport)
@UseGuards(AuthGuard('jwt'))
// Sau
import { JwtAuthGuard } from '@galaxy-stack/orbit-auth';
@UseGuards(JwtAuthGuard)Dịch vụ JWT:
typescript
// Trước
import { JwtService } from '@nestjs/jwt';
// Sau
import { JwtService } from '@galaxy-stack/orbit-auth';Băm mật khẩu (bcrypt → Bun.password)
typescript
// Trước
import * as bcrypt from 'bcrypt';
const hash = await bcrypt.hash(password, 10);
const isValid = await bcrypt.compare(password, hash);
// Sau (native Bun)
const hash = await Bun.password.hash(password);
const isValid = await Bun.password.verify(password, hash);Xác thực (class-validator → Zod)
typescript
// Trước
import { IsEmail, MinLength } from 'class-validator';
class CreateUserDto {
@IsEmail()
email: string;
@MinLength(8)
password: string;
}
// Sau
import { z } from 'zod';
const CreateUserSchema = z.object({
email: z.string().email(),
password: z.string().min(8),
});
type CreateUserDto = z.infer<typeof CreateUserSchema>;Bootstrap
typescript
// Trước
import { NestFactory } from '@nestjs/core';
import { NestExpressApplication } from '@nestjs/platform-express';
const app = await NestFactory.create<NestExpressApplication>(AppModule);
// Sau
import { BunFactory } from '@galaxy-stack/orbit-core';
const app = await BunFactory.create(AppModule);Các bước sau khi di chuyển
Cài đặt các phụ thuộc:
bashbun installCập nhật cấu hình TypeScript nếu cần:
json{ "compilerOptions": { "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", "experimentalDecorators": true, "emitDecoratorMetadata": true } }Khởi động máy chủ phát triển:
bashbun run devChạy kiểm thử:
bashbun test
Ghi chú về tính tương thích
Hoàn toàn tương thích
- Hệ thống module (
@Module) - Controllers và định tuyến
- Tiêm phụ thuộc
- Guards, Pipes, Interceptors
- Bộ lọc ngoại lệ
- GraphQL resolvers
- Mẫu microservice
- WebSocket gateways
- Lập lịch
- Kiểm tra sức khỏe
Yêu cầu cập nhật thủ công
- TypeORM/Mongoose → Drizzle
- Chiến lược Passport → Orbit guards
- bcrypt → Bun.password
- class-validator → Zod
- Các tính năng đặc thù nền tảng
Không được hỗ trợ
- Nest CLI schematics (sử dụng
orbit generate) - Nest DevTools (sử dụng
@galaxy-stack/orbit-devtools)
