TIL 02 - 인스타그램 클론코딩 (2) 파일관리

MOON·2021년 5월 9일
0
post-thumbnail

노마드코더 인스타그램

노마드코더 인스타그램 클론코딩 바로가기 https://nomadcoders.co/instaclone

Devide & Conqure

프로젝트를 진행하면서 가장 중요한게 파일을 관리하는 방법이라고 생각한다. 집에서도 정리정돈이 잘 되어져 있어야 물건을 쉽게 찾을 수 있듯이
프로젝트도 마찬가지다. 프로젝트는 점점 커지는데 파일을 나눠주지 않으면 후의 유지보수에서도 어려움을 겪을 수 있다.
Graphql에서는 많은 Query와 Mutation들을 필요로 하는데 이들을 잘 나눠서 마지막에 합쳐주는 작업을 하고자한다.

정리
각각의 Query,Mutation에 대한 폴더생성 => 각각의 폴더안 typeDefs.js와 resolvers.js를 생성(Devide) => 후에 합쳐준다.

  • npm install graphql-tools@latest : Devide & Conqure을 위해 설치

생성파일들

  1. client.js : PrismaClient를 이용해 client 생성
  2. schema.js : graphql-tools를 이용해서 각 파일들의 contents를 합쳐준다.
  3. server.js : 합친 schema를 이용해 server 구현
// schema.js

import {loadFilesSync} from "..."
import {mergeResolvers,mergeTypeDefs} from "..."
import {makeExecutableSchema} from "..." 

// 최상위 Root경로아래의 모든 폴더안의 모든 파일들 중에서 typeDefs.js인 파일들을 가져옴 
const loadedTypes = loadFilesSync(`${__dirname}/**/*.typeDefs.js`);
const loadedResolvers = loadFilesSync(`${__dirname}/**/*.resolvers.js`);

const typeDefs = mergeTypeDefs(loadedTypes);
const resolvers = mergeResolvers(loadedResolvers);

const schema = makeExecutableSchema({typeDefs,resolvers});

export default schema;

// server.js

import dotenv from "dotenv";
dotenv.config();
import {ApolloServer} from "apollo-server";
import schema from "./schema";

const server = new ApolloServer({
  schema,
});

const PORT = process.env.PORT;

server
   .listen(PORT)
   .then(()=>console.log(`Server is running on http://localhost:${PORT}/`));

dotenv

dotenv는 외부에 노출되어서는 안되는 정보를 위해서 필요하다.
npm install dotenv

  • 사용법 : 앱의 제일 첫 부분에 지정해줘야만 process.env.를 통해서 .env에 지정해준 정보를 가져올 수 있다.
  • .env는 git에 올라가지 않는다.

0개의 댓글

관련 채용 정보