2 분 소요

Project

팀 프로젝트 개발 환경 구축

React 팀 프로젝트

개발 환경 구축

결국 CRA

webpack과 bable 설정으로 react app을 구축하려고 했다.

그런데, webpack 설정을 하다보니 모르는 채로 안되면 막 갖다 붙이고, 이해하지 못한채로 완성을 시켜놓고 보니

이것이 정말 배포까지 문제없이 되는 것인지 불안감이 들었고, 회의감도 들었다.

멘토님께 자문을 구한 후 CRA로 프로젝트를 하는 것이 지금 수준에서는 더 맞다고 판단했다.

이유는

1. 포트폴리오이기 때문에 집중해야 할 부분은 webpack babel 보다는 React 로 잘 동작하고 코드 품질도 좋은 것을 만드는 것이 더 좋은 전략이다.
2. CRA 기반으로 생성하여 실제 많은 사용자가 사용하는 웹사이트를 만들어서 운영해 본 경험이 더 중요하다.
3. 그 다음 최적화해야 할 필요가 있을 때 webpack을 공부해도 늦지 않다.
4. 현재 회사에서 신입을 채용할 때 webpack 을 얼마나 알고 경험했는지 여부가 중요한 것은 아니라고 한다.

따라서 결국 CRA로 react app을 구축하게 되었다.

prettier & eslint

코드 컨벤션을 지키기 위해 prettier와 eslint를 적용하기로 했다.

  • eslint

    eslint는 javascript나 react의 문법 오류를 잡아주는 역할을 하는데, airbnb 설정을 이용할 수도 있다.

    airbnb 설정을 이용하려고 했는데, rule이 매우 쎄서(컴포넌트 시 arrow function 안된다거나 js안에서 jsx 문법 못쓴다는 등) 개발해 나가다가 rule 설정하는 데에 또 시간을 쏟게 되지 않을까 하는 생각을 하게 되었다.(실제로 이미 여기서 시간 굉장히 많이 소비함)

    따라서 eslint:recommended를 사용하는 것으로 했다.

    airbnb 규칙 적용 시

    module.exports = {
      env: {
        browser: true,
        es2021: true,
        node: true,
      },
      parserOptions: {
        ecmaVersion: 12,
        sourceType: "module",
      },
      extends: ["airbnb", "plugin:react/recommended", "prettier"],
      plugins: ["react", "prettier"],
      rules: {
        "linebreak-style": 0,
        "react/jsx-filename-extension": [1, { extensions: [".js", ".jsx"] }],
        "arrow-body-style": 0,
        "react/function-component-definition": [
          2,
          {
            namedComponents: [
              "function-declaration",
              "function-expression",
              "arrow-function",
            ],
          },
        ],
      },
    };
    

    eslint:recommended 적용 시

    module.exports = {
      env: {
        browser: true,
        es2021: true,
        node: true,
      },
      parserOptions: {
        ecmaVersion: 12,
        sourceType: "module",
      },
      extends: ["eslint:recommended", "plugin:react/recommended", "prettier"],
      plugins: ["react", "prettier"],
      rules: {},
    };
    

    [참고]
    https://stackoverflow.com/questions/42640636/react-must-be-in-scope-when-using-jsx-react-react-in-jsx-scope
    https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/function-component-definition.md

  • prettier

    {
      "semi": false,
      "singleQuote": true,
      "tabWidth": 2,
      "trailingComma": "all",
      "printWidth": 80,
      "arrowParens": "avoid"
    }
    

    prettier는 세미 콜론을 쓰지 않고, singleQuote 사용하는 것을 기반으로 추가적인 설정은 추후에 추가할 예정이다.

컴포넌트 만들기

먼저 atom 단위(Button, Input 등)의 컴포넌트를 각자 생성하는 것으로 한다.

하루에 한 번씩은 코드 리뷰를 하고 머지할 예정이다.

Git 컨벤션 설정

  • Convention Type

    icon 유형 설명
    ✨ :sparkles: Feat 새로운 기능 추가
    ➕ :heavy_plus_sign: Add 파일추가(이미지, 아이콘, 폰트…)
    🐛 :bug: Fix 버그 수정
    📝 :memo: Docs 문서 수정
    💄 :lipstick: Style 스타일(CSS, 퍼블, UI적인 요소) 수정
    💡 :bulb: Comment 주석 추가, 수정, 삭제
    📦️ :package: Chore 빌드업 업무, 패키지 매니저 수정
    ♻️ :recycle: Refactor 수정
    🚚 :truck: Rename 변수명, 함수명, 파일명, 폴더명 변경
    🔥 :fire: Remove 변수, 함수, 기능, 파일, 폴더 삭제
    💥 :boom: !BREAKINGCHANGE 큰 api 변경, 큰 구조적인 변경
    🚑️ :rotating_light: !HOTFIX 급한 치명적인 버그 수정
    🚀 :rocket: Deploy 배포
  • branch convention

    각자 이름으로 사용

  • git commit convention

    gitmoji –commit

    이모지 선택

    title: Input 컴포넌트 추가

    TextInput 추가
    FileInput 추가

댓글남기기