모르는 것을 알아가는게 중요한거지! (feat. 컨트리뷰톤 2주차)
첫 온라인 화상 회의 때 모르는 것들이 폭풍처럼 쏟아졌다. 이 상황을 해결하기 위해서 전략을 세웠는데…
모르는 이야기를 가만히 듣고 있기 보다는 내가 모르는 걸 물어보자!
다음 회의에 들어가기 전에 mocha 프로젝트를 이것저것 살펴보며 이해가지 않는 것이나 궁금한 것들의 질문 리스트 를 만들었다.
두 번째 화상 회의는 각자 진행 상황을 공유하고 앞으로 어떻게 해나갈지 가이드를 주시는 방향으로 진행 되었는데, 난 “이전 글에서 설명한 것들(mocha로 테스트코드 짜보기, mocha에서 사용하는 도구와 용어에 익숙해지기, 로컬에서 mocha 돌려보기)을 했고, 이슈를 이제 찾아볼 예정이다” 라고 했다.
아웃 사이더님은 각자 속도에 맞춰 천천히 진행하면 된다고, 실제로 많은 것들이 쏟아지니 한 번에 다 이해할 필요 없다며 용기를 주시고 질문하는 것들에 대답해 주셨다.
나의 질문 리스트
1. 모카에서 build 란 무엇인가요?
-
build란 배포 파일(사용자가 볼 파일) 을 만드는 것.
-
현업에서는 dev용 build, QA용 build, production용 build 등으로 나눠질 수 있다.
-
mocha를 사용해서 node 또는 브라우저에서 테스트 할 수 있다. 다만 node에서는 배포 파일이란게 필요 없어서 build 과정이 없고, 브라우저에서는 하나의 파일로 떨어뜨려줘야 되기 때문에 build 과정이 있어야 한다.
2. PR 을 보내기 전에 제가 해야할 일은 무엇인가요?
-
PR을 보내면 1) 내가 올린 PR(변경 사항)에 대해 mocha가 node에서 잘 돌아가는지 확인 2) build해서 브라우저에서도 잘 돌아가는지 확인 3) lint 맞는지 확인 4) 사이트에서 안깨지는지 확인 등을 자동으로 진행하는 과정 을 거친다. 이 모든 과정을 CI 라고 한다.
-
따라서 난 PR 보내기 전에 로컬에서 npm test만 잘 돌아가는지 확인하고 올리면 됨. 최소한의 보장을 하는 것.
3. 브랜치를 어떤 브랜치에서 따야 하나요? 브랜치 이름은 issue 번호로? 이와 관련된 정보는 어디서 볼 수 있나요?
-
일반적으로 master에서 딴다. master에서 안따는 룰을 가지고 있는 경우는 contributhon.md 파일에 나와있다.
-
master에서 브랜치 따고 작업하는 도중에 master에 commit이 쌓이고 있을 것 이다. 추가된 commit과 내가 하는 작업이 충돌할 수 있기 때문에 내 PR이 깨질 수도 있다. 작업을 하면서 계속 rebase하면서 땡겨 와야 하는게 정석이지만.. 일단 신경쓰지말고 작업하자.
-
왜? Travis 가 CI를 돌릴 때 1) 단독적인 PR에 대해서도 돌리고 2) PR을 master에 merge 했을 때 두 가지 경우에서 돌린다. 따라서 master에 내가 모르는 commit들이 쌓여 있어서 merge 되었을 때 충돌 상황이 발생하면 Travis가 인지하여 알려준다.
-
회사가 아니고 오픈소스 PR 에서는 브랜치 이름은 신경 쓸 필요 없다.
4. bin 디렉토리는 어떤 역할을 하나요?
-
실행 파일이 들어있는 디렉토리.
-
내가 command line에서 어떤 명령어를 실행 시킬 수 있는 것은 그 명령에 대한 실행 파일이 bin 디렉토리에 저장되어 있기 때문이다.
-
예를 들어
-
내 컴퓨터의 루트에 있는 bin 디렉토리: 내 컴퓨터에서 사용할 수 있는 명령어들의 실행 파일 모음.
-
mocha 프로젝트에 있는 bin 디렉토리: 모카 실행 파일 모음. 사람들이 mocha 오픈 소스를 다운받아 mocha 명령어를 사용할 수 있게 함.
-
npm으로 관리하는 프로젝트의 node_modules 디렉토리에 있는 bin 디렉토리: npm으로 다운 받은 모듈들의 실행 파일이 들어있음.
5. 모듈의 전역(global) 설치와 지역(local) 설치는 어떤 차이가 있나요?
-
전역 설치는
usr/local/lib/node_modules
안에 들어가고 실행 파일이 그 디렉토리의 bin에 들어간다는 것. 전역 설치하면 환경 변수에 해당 모듈의 PATH가 들어가서 내 컴퓨터의 어떤 위치에서든 사용할 수 있게 되는 것이다. -
지역 설치는
프로젝트명/node_modules
안에 들어가고 실행 파일도 bin 안에 들어간다는 것. 환경 변수에 PATH 지정이 안되니 사실 실행시마다프로젝트명/bin/ 명령어
해야 하는데 번거로우니 npm이 그냥명령어
를 바로 사용하도록 도와준다.