MAC은 파일명의 대소문자를 구분하지 않는다.
예를들어 ormconfig.ts-> ormConfig.ts로 변경을 하면 코드에서는 당연히 변경에 맞춰 코드를 수정한다.
아무 문제 없어 보이지만 git에 commit을 할 때부터 문제가 발생한다.
git status로 확인해보면 파일명은 ormConfig.ts로 변경되었음에도 불구하고 다음과 같이 출력된다.
modified: src/ormconfig.ts
이대로 commit을 하게되면 git에는 변경되기 전 파일명인 ormconfig.ts가 올라간다.
이 상태라도 MAC에서 개발하는데는 전혀 지장이 없다. 문제가 발생하는 시점은 AWS 같은 서버에 배포할 때다.
Linux는 대소문자를 구분한다. 서버에서 git을 통해 소스를 받을 때 변경되기 전 파일명으로 받게되고 실행할 때 해당 파일이 없다고 에러가 발생한다.
이 문제를 해결하려면 파일명을 변경하고 git에 commit 할 때 다음과 같은 명령을 이용한다.
git mv --force src/ormconfig.ts src/ormConfig.ts
이렇게 실행하면 unstaged 상태였던 파일이 staged 상태로 변경되면서 파일명 변경도 적용된다.
renamed: src/ormconfig.ts -> src/ormConfig.ts
이전 프로젝트 때는 진도를 빼는 것에 급급해서 type을 꼼꼼히 챙기지 못했다.
사이드 프로젝트를 진행하면서 GraphQL과 TypeScript를 찬찬히 살펴보다가 graphql-codegen이란 것을 발견했다.
graphql-codegen은 graphql schema를 이용하여 자동으로 TypeScript 타입을 생성한다.
resolvers에서는 만들어진 타입을 사용하기만 하면 된다.
흐흐 이번엔 타입을 좀 더 꼼꼼히 추가할 수 있겠네. 이전 프로젝트에도 적용해봐야겠다.