팀프로젝트 전에 복습하는 기록

- NestJS 다운로드

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를 입력하여 설치된 버전 확인

- Nest 프로젝트 생성

1. nest new aaa => aaa 이름으로 프로젝트 생성
nest 명령어로 설치 안될 경우 npx nest new aaa로 설치

2. 키보드를 이용하여 선택지 중 yarn으로 이동해 엔터

- Nest 프로젝트 생성( git clone 사용 )

1. cd 명령어로 설치할 폴더로 이동

2. 터미널에 명령어 입력
- git clone https://github.com/nestjs/typescript-starter.git

- yarn install 입력

- NestJS .git파일 관리

NestJs 를 만들게 되면 typescript 파일 등 여러 파일들과 함께 .git 파일도 자동으로 만들어지게 됩니다.

하지만, 최상단에 우리만의 .git 파일이 숨긴 파일로 존재하고 있습니다.

따라서, git 파일이 2개 이상 존재하게 되므로 git add, commit 후 push 할 때 에러가 발생되므로 NestJs 를 만들 때 자동 생성된 git 파일을 삭제해 주어야 합니다.

1. 터미널에 명령어로 .git파일 제거 
rm -rf .git

2. 리스트 조회로 .git파일 제거 확이인
ls -al

- prettier 저장시 자동포멧팅

1. 최상단 위치에 .vscode 폴더 생성
2. settings.json 파일 생성
3. 파일 내에 코드 작성 
{
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "esbenp.prettier-vscode"
}
- "editor.formatOnSave": true : 저장하면 프리티어가 바로 적용될 수 있게 설정
- "editor.defaultFormatter": "esbenp.prettier-vscode” :  prettier 포멧 적용 설정

- GraphQL 설치

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 파일 삭제

- GraphQL 폴더 구조 셋팅(module, resolver, service 생성)

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 {}
profile
백엔드 성장 기록

0개의 댓글