팀프로젝트 전에 복습하는 기록
1. 터미널에 다운로드 입력
yarn add -g @nestjs/cli
- permission denined 에러가 날 경우 명령어 앞에 sudo 를 붙여 관리자 권한으로 설치
- Missing list of packages to add to your project 에러가 날 경우
yarn add global @nestjs/cli 으로 설치
2. 설치 확인을 위해 nest -version를 입력하여 설치된 버전 확인
1. nest new aaa => aaa 이름으로 프로젝트 생성
nest 명령어로 설치 안될 경우 npx nest new aaa로 설치
2. 키보드를 이용하여 선택지 중 yarn으로 이동해 엔터
1. cd 명령어로 설치할 폴더로 이동
2. 터미널에 명령어 입력
- git clone https://github.com/nestjs/typescript-starter.git
- yarn install 입력
NestJs 를 만들게 되면 typescript 파일 등 여러 파일들과 함께
.git 파일
도 자동으로 만들어지게 됩니다.
하지만, 최상단에 우리만의 .git 파일이 숨긴 파일로 존재하고 있습니다.
따라서, git 파일이 2개 이상 존재하게 되므로 git add, commit 후 push 할 때 에러가 발생되므로 NestJs 를 만들 때 자동 생성된 git 파일을 삭제해 주어야 합니다.
1. 터미널에 명령어로 .git파일 제거
rm -rf .git
2. 리스트 조회로 .git파일 제거 확이인
ls -al
1. 최상단 위치에 .vscode 폴더 생성
2. settings.json 파일 생성
3. 파일 내에 코드 작성
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
- "editor.formatOnSave": true : 저장하면 프리티어가 바로 적용될 수 있게 설정
- "editor.defaultFormatter": "esbenp.prettier-vscode” : prettier 포멧 적용 설정
1. 터미널에 명령어 입력
yarn add @nestjs/graphql @nestjs/apollo graphql apollo-server-express
2. app.module.ts 파일에 GraphQL 세팅
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
}),
],
// controllers: [AppController],
// providers: [AppService],
})
export class AppModule {}
3. app.controller.ts 파일, app.service.ts 파일 삭제
1. module 파일 형식
import { Module } from '@nestjs/common';
import { BoardResolver } from './board.resolver';
import { BoardService } from './board.service';
@Module({
// imports: [],
// controllers:[],
providers: [
BoardResolver, //
BoardService,
],
})
export class BoardModule {}
2. resolver 파일 형식
import { Query, Resolver } from '@nestjs/graphql';
import { BoardService } from './board.service';
@Resolver()
export class BoardResolver {
// 라우팅 개념을 통해 Resolver에 Service 의존성 주입
constructor(
private readonly boardService: BoardService, //
) {}
@Query(() => String) // API Docs를 만들기 위한 GraqhQL 타입 선언
getHello() {
return this.boardService.aaa();
}
}
3. service 파일 형식
import { Injectable } from '@nestjs/common';
@Injectable()
export class BoardService {
aaa() {
return 'Hello World!';
}
}
4. app.module.ts 에 BoardModule, autoSchemaFile 추가
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { BoardModule } from './apis/boards/board.module';
@Module({
imports: [
BoardModule,
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
autoSchemaFile: 'src/common/graphql/schema.gql', // SchemaFile 자동 생성 및 위치 지정(Code-First)
}),
],
// controllers: [AppController],
// providers: [AppService],
})
export class AppModule {}