How to share a project with github ( = git - flow )

이동환·2020년 8월 31일
1

TIL

목록 보기
18/74

Achievement Goals

  • node.js 및 nvm, npm, pakage.json 의 역할 이해하기.
  • git - flow 를 통해 pair와 협업하기

런타임(run time)

: 런타임이란 프로그래밍 언어가 구동되는 환경이다. 우리가 JavaScript를 이용해서 코드를 적었으면 코드가 실행이 되었다면 바로 실행되는 곳이 바로 런타임이다.
ex) node.js, browser
다시 말해, 런타임이란 프로그래밍 언어가 돌아가는 환경, 그리고 node.js는 JavaScript 런타임입니다.

NVM(Node Version Manager)

: NVM는 간단한 명령어로 Node를 설치하고, 다양한 node version을 손쉽게 옮겨 다닐 수 있게 도와준다.

그럼 왜 NVM이 필요한것일까 ?

개발을 하다 보면 다양한 node.js 버전에 대응해야 할 일이 생긴다. 예를 들면
node 10.13.0 버전에서는 내가 짠 코드가 잘 돌아갔는데, node 12.13.0 버전에서는 안 돌아가는 일들이 생깁니다. 그래서 node 12.13.0에서 테스트를 해봐야한다. 새로 node 12.13.0을 깔고, 다시 지웠다가 다른 버전가는것이 많이 번거로워서 설치와 제거를 하지않고 자유자제로 움직이게 도와주는것이 NVM을 사용하는 이유이다.

MacOS에서 NVM 다운받는 방법

$ touch ~/.bash_profile 
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

NVM 의 명령어s

1. $ nvm ls 
// nvm을 통해 설치한 node version들을 볼 수 있다.
2. $ nvm install 10.13.0
//node 10.13.0 버전을 설치 가능하다.(이전것을 지우지않고도 !)
3. $ nvm use (사용하고 싶은 node version : use 명령어 전에 해당 node version이 설치되어있어야 한다.)
//다른 node version을 사용하고 싶을 때.
4. NVM 버전 확인하기
$ nvm --version

번외

1. $ node -v
//node version을 확인할 때.

NPM(Node Pakage Manager)

:필요한 모듈을 다운로드할 수 있는, 모듈들이 모여있는 모듈 스토어다.
일종의 앱스토어라고 생각하면 좋을거 같다. 필요한 모듈은 대부분 NPM에서 다운로드해서 사용할 수 있다.

Pakage.json

: package.json에는 어떤 한 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 적혀있다.
그래서 npm 만을 사용하여 필요한 모듈을 pakage.json 에서 다운받아 사용 할 수 있다. 이렇게 필요한것만 다운받는다면 많은 양과 큰 파일을 다 다운 받지 않아도 되는 효과를 누릴수 있다.

주의해야할 점은 이 프로그램을 실행시키기 위해 필요한 실제 모듈은 node_modules이라는 폴더에 다 들어가 있다는 것입니다. package.json에는 어떤 모듈인지만 적혀 있다는것이다.
음식으로 예를 들어보면,
pakag.json은 음식 영양분을 체크할 수 있는 그런한 정리된 표라고 볼 수 있다.
즉, package.json만 보면 어떤 모듈이 들어가 있는지를 알 수 있습니다.

$ npm install라는 키워드로 필요한 모듈을 다운받을 수 있다.

npm install 을 사용할때, 알아야할 3가지 키워드

  1. $ npm install 모듈이름 --save

1번과 같이 install을 했을때, 모듈은 dependencies 항목에 저장된다.
여기서 --save는 생략 가능하다

  1. $ npm install 모듈이름 --save dev

2번과 같이 install을 했을때, 모듈은 devDependencies 항목에 저장된다.

  1. $ npm install 모듈이름 --g

3번과 같이 install을 했을때, 모듈은 global에 저장된다.

package.json 파헤치기?(feat.Code states)

1. dependencies
이 프로젝트가 돌아가기위해 반드시 필요한 모듈들이 무엇인지가 적혀 있다.

2. devDependencies
이 프로젝트를 개발하는 환경에서 필요한 모듈들이 무엇인지가 적혀 있습니다. 예를 들면 코드 모양을 잡아주는 lint나 테스팅 모듈처럼, 실제 프로젝트 동작에 직접적으로 영향을 주지 않는 모듈들이다.

3. scripts
npm 으로 실행시킬 수 있는 명령어를 정의합니다. 만약 npm test와 같은 명령어를 실행시켰는데 "정의되지 않은 명령어" 라는 오류 메시지가 나오면, package.json 파일 scripts 에 해당 명령어가 정의되어 있는지를 확인해 보시면 됩니다.

git workflow

페어분과 같은 과제를 하기위해 코드 스테이츠의 과제를 fork한 후,
git remote add pair <페어분의 레파지토리 URL> 이라는 키워드로 연결할 수 있었다. 연결한 후에 드라이버가 먼저 파일을 만들고, 푸쉬를 하고,
네비게이터는 git pull pair master 라는 키워드로 코드가 적힌 파일을 통째로 쉽게 가지고 올 수 있었다. 이렇게 한명이 수정 후 다시 푸쉬를하고, 다른 한명은 풀을 하여 어떻게 git을 사용하는지에 대해서 알아보았다.
(주의 사항)
(push는 항상 나의 레파지토리에 해야하는것이고, pull은 페어의 레파지토리에서 하는것이다)

또 conflict 가 발생하였을때, 어떻게 대처해야하는지도 알아보았다. 처음에 나와 페어분께서 이해가 안가서 어떻게 conflict가 발생하고, 해결하는지 헷갈려했지만, 풀 수 있었다. (여기서 conflict란 한 명이 a라는 코드를 수정하여 push를 하고, 다른 상대도 a라는 코드를 수정하여 푸쉬를 한 경우이다. 이 때 git 이 어떤 코드가 맞는 코드인지를 인지 몰라서 conflict를 발생 시킨다.)

마지막으로 branch에 대해 실습을 했다. branch란 나뭇가지라는 의미를 가진 단어다. 우리는 원본을 손대지 않고, 새로운 코드를 짜서 새로운 branch에서 테스트를 하고, master branch로 가지고 오는 행위를 반복한다.

  1. branch를 만드는 방법
    git checkout -b <브랜치 이름>

checkout 이라는 키워드를 통해서 새로운 한 브랜치를 만들 수 있다.
그 뒤에 나타만 -b 라는것을 같이 쓰면, checkout으로 브랜치를 만들고, 바로 그 브랜치로 이동할 수 있다.

(주의 사항)
(브랜치는 항상 현재 작업공간을 베이스로 만든다)

profile
UX를 개선하는것을 즐기고 새로운것을 배우는것을 좋아하는 개발자입니다.

0개의 댓글