티스토리 뷰

$ 개발 환경 세팅하기

 

# ESlint 설치 및 적용

npm insatll eslint --save-dev
npm eslint --init  // .eslintrc 파일 생성

# ESlint 적용 예시

//.eslintrc 

{
    "extends": "eslint:recommend", // eslint에서 추천하는 규칙들을 적용하는 설정
    "rules": { //프로젝트에서 자체적으로 덮어쓰고 싶은 규칙들을 정의할 때 사용
        "semi": ["error", "always"], 
            //"always" : 표현식 끝에 항상 세미콜론 설정. 만약 세미콜론 작성하지 않으면 오류 발생
        "quotes": ["error", "double"]
        // "double : ""(따옴표)사용 설정. 만약 따옴표로 작성하지 않으면 오류발생
    }
}


// 규칙을 지정하는 배열의 1번째 요소 : 규칙이 어긋났을 때, 나타내는 표현강도(?)

// 규칙을 지정하는 배열의 2번째 요소 : 규칙의 설정값.

// 예를 들면, "quotes": ["error", "double"]

// 규칙으로 더블 따옴표로 사용 설정, ""(따옴표)작성하지 않으면 오류. 즉, 해당 규칙이 지켜지지 않을 경우, "erro"표시

# ESlint 적용 예시

// .eslintrc
{
    "extends":"eslint:recommended", // eslint에서 추천하는 규칙들을 적용
    "env": { // 프로젝트의 사용 환경 적용
        // 미리 정의된 전역 변수를 정의한다
        "node": true, // 전역변수는 node.js로 추측된다.
        // Node.js global variables and Node.js scoping.
        "es6": ture, // 모듈을 제외한 ECMAScript 6기능을 모두 활성화
           // ecmaVersion parser option to 6 로 설정이된다함.
           // ecmaVersion parser option가 무엇일까?
        // enable all ECMAScript 6 features except for modules (this automatically sets the ecmaVersion parser option to 6).
    }
     "rule": {
        "no-console":"off"
         // 콘솔함수 사용 시, 오류 발생 하지 않는 설정. 
         // 실제로 배포했을 때, 콘솔이 찍혀있으면 안되니깐(?)
     }
}

 

어제부터 나의 첫 프로젝트가 시작되었다. 혼자가 아닌 팀원과 함께 프로젝트를 진행하는 것이 처음이라 모든 것이 쉽지 않다. 예를 들면, ESlint, prettier 세팅하기

어떤 설정을 하면 좋을지 사실 잘 모르겠다.  스프린트 때, 간단하게 설정했던 "no-console":"off" 같은 세팅 밖에 떠오르지 않았다. 

 

1차 개발 환경 설정이 끝나고서야, ESlint 공식 문서로 설정에 대한 의미도 좀 꼼꼼하게 찾아보고, 유어 클래스 ESlint 설정 부분까지 빠르게 훑어봤다. 한편으로는, 혼자서 무심결에 사용했던, 따옴표(""), 작은따옴표('')들도 협업 또는 코드 병합을 위해서는 어떤 따옴표를 사용할지 정하는 것도 아주 중요했다. 이제 쪼금 팀 프로젝트가 실감이 난다. 아마 프로젝트 진행 중에 추가적으로 세팅을 해야겠다.


$ git workflow 이해하기

이미지 출처 : 코드스테이츠

? upstream이란 무엇이고, upstream에는 왜 2개의 브랜치가 있는걸까?

 

- upstream : master 레파지토리

- master : dev 브랜치에서 합쳐진 코드가 최종적으로 보내지고 배포하는 브랜치

dev : 개발단계에서 PR요청을 받아서 코드가 합쳐지는 브랜치

 


< git workflow 순서>

 

< 팀장 기준 >

 

1. upstream : 코드 스테이츠에서 만들어 준, 프로젝트 레파지토리를 fork(복사)한다

 

2. 팀장의 깃 헙, 원격 저장소에서 fork(복사)한 프로젝트 레파지토리를 확인한다.

 

3. 팀장의 로컬에서 project 이름을 가진 폴더를 생성한다.( mkdir <폴더 이름> )

 

4. project폴더 안에서 git clone <fork 한 프로젝트 레파지토리 주소> 통해 clone 한다. 

 

<원격 저장소의 레포를 로컬로 clone 하면 master branch(더 정확하게 default branch)만 clone 된다>

 

5. master branch에서 초기 세팅을 한다

 

5 - 1. npm init : package.json 파일 생성 / 프로젝트 정보 이름, 버전, 설명, git 주소 등 / 모듈 내용이 기록

 

5 - 2. eslint / prettier 설정 : .eslintrc / .prettierrc / .gitignore 설정

 

6. 초기 셋팅 완료 후, git push origin master (원격 저장소로 커밋 보내기)

 

6. 로컬에서 dev 브랜치 생성 : git branch dev ( git branch <branchname> )

 

7. 로컬에 있는 dev 브랜치를 upstream 원격 저장소로 push 한다 : git push origin dev

: 로컬, 원격 저장소에 dev 브랜치가 생성됨( 원격 저장소로 dev브랜치(커밋들이 만들어짐) 보내기 / 원격 저장소의 dev브랜치의 commit을 저장하기)

 

8. : git branch --set-upstream-to origin/dev

8번을 왜 설정해야 할까? 로컬 dev브랜치와 원격 저장소 dev브랜치를 연동하기 위해서(git remote add <이름> 연결할 원격저장소 주소)

 

**팀원들이 사용할 Project 초기 세팅 완료**

 

<팀원 기준>

 

1. upstream인 프로젝트 레파지토리를 fork(복사)한다.

 

2. 나의 깃 헙, 원격 저장소에서 fork(복사)한 프로젝트 레파지토리를 확인한다.

 

2. 나의 로컬에서 project 이름을 가진 폴더를 생성한다.

 

3. 나의 로컬 project 폴더 안에서 git clone <내가 fork 한 프로젝트 레파지토리> 통해 clone 한다 

 

<원격 저장소의 레포를 로컬로 clone 하면 default branch만 clone 된다.>

 

4. 이 경우, upstream 레파지토리의 settings- branches-설정하고 싶은 기본 브랜치 선택 - update 설정을 해주면, 내가 원하는 default branch를 clone 할 수 있다.

 

4 - 1 ) 깃 헙에서는 master branch가 default branch로 설정이 되어 있기 때문에, 내가 클론 한 레파지토리의 default branch는 master branch일 경우, 

 

upstream의 dev 브랜치의 merge를 위해서 나의 로컬 안 master branch에서 dev 브랜치를 하나 생성한다! 

 

4 - 2 ) dev branch 위치에서 git push origin dev

왜 로컬 dev branch를 push 할까? dev브랜치는 백업용 branch로 이용하기 위해서

 

5 ) **항상 내가 어디 branch에서 작업을 하고 있는지 확인하고 branch를 생성할 것**

dev branch에서 새로운 기능을 구현할 branch를 생성한다. 예를 들어, dev branch에서 comments branch 생성하기 : git checkout -b comments(comments 브랜치 생성 및 comments 브랜치로 이동)

 

**주의점** : 로컬의 master branch가 아니라 로컬의 dev branch에서 기능을 구현할 branch를 만든다.

 

6 ) comments 기능을 다 구현했다고 가정하자. 나의 원격 저장소로 comments branch를 push 해준다

git push origin comments

: 로컬 comments 브랜치에서 작성한 코드를 원격 저장소로 업데이트 및 upstream dev 브랜치로 코드 병합(merge) 하기 위해서

 

★ upstream(원격 저장소)과 나의 로컬을 연결해주기 : git remote add upstream <upstream 원격 저장소 주소>

 

7 ) 원격 저장소에 있는 comments 브랜치를 upstream의 dev 브랜치로 PR 요청을 한다.

 

8 ) 팀원과의 코드 리뷰가 끝나고, upstream의 dev 브랜치에서 merger를 여부를 결정한다.

 

9 ) 팀원과 코드 리뷰가 끝이 나고, merge승인을 받아, merge를 진행한다. 그러면 upstream의 dev branch의 코드는 업데이트가 되었다.

 

10 ) 새로운 기능을 구현하기 위해서 나의 로컬 dev브랜치에서 코드 최신화를 해야 한다.

: git pull upstream dev 

 

11 ) 바로 로컬 dev 브랜치에서 push를 해서 나의 원격 저장소 dev의 코드를 최신화 및 백업해준다.

 

12 ) 그리고 다시 로컬 dev 브랜치에서 기능을 구현할 새로운 브랜치를 생성하고 위와 같은 flow가 반복된다.

 

$ 오늘의 꿀팁!

 

서버 구축하기 위해서 Node.js의 express 모듈을 설치를 진행했다. 항상 --save 옵션을 이용해서 package.json의 dependencies에 등록했었다. 팀원이 아래와 같이 명령어를 작성할 때, 엇! --save옵션! 내가 혹시나 모르는 부분이 있나 싶어서 팀원에서 package.json을 보여달라고 했다. 근데 dependencies에 express가 등록되었다. 띠용! 왜 저렇게 되는지 물어봤어야 했는데, 다른 작업을 수행을 진행하기 위해서 그냥 지나쳤다. 그러다가 다른 팀원이 질문을 하게 되면서 제대로 알게 되었다. 

npm install express 

npm-install 공식문서에서 확인할 수 있었다. 구글링 해보니깐, npm 5에서는 --save 옵션 없이 필요 없다고 한다. 

npm install saves any specified packages into dependencies by default.
// npm install는 기본적으로 dependencies(종속성)에 지정된 패키지들을 저장한다.

 

나도 꿀팁들을 팀원들에게 공유해줄 수 있는 실력을 쌓을 수 있길....💪

 

$ 👀🤔

git workflow 테스트를 진행하면서 내가 왜 원격 저장소 추가/연결하기를 잘 못 이해하고 있었을까라는 생각이 들었다. git remote -v 를 통해 나의 로컬 폴더에 원격 저장소를 확인할 수 있는데 말이다. 결국 나의 'origin'이라는 원격 저장소는 자동으로 등록이 되고, git remote add upstream <원격저장소 주소> 통해서 'orgin'이 아닌 다른 원격 저장소가 추가된다.

만약에 로컬 dev 브랜치를 생성하고, dev 브랜치에서도 git remote -v 하면 위와 같은 그림의 원격 저장소 나올 것이다. 나는 로컬의 각 브랜치마다 원격 저장소를 연결해야한다고 생각했다 ;; (아님)

결국 원격 저장소를 연결하는 이유는 원격 저장소의 코드들을 로컬에서 가져오고 싶은 것이다. 어렴풋이 알고 있는 것이 더 무섭다.

 

브랜치 생성 및 브랜치 이동하기

git checkout -b <브랜치 이름> // 브랜치 생성 및 생성된 브랜치로 이동

브랜치 삭제하기

git branch -D <브랜치 이름> // 브랜치 삭제하기

 

$ 내일은 프로젝트 폴더 구조 설정을 마무리하고 싶다. 화이팅!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함