mailto:
Project/
├─ src/
│ ├─ components/ //React 컴포넌트들
│ │ ├─ login/
│ │ ├─ signup/
│ │ ├─ list/
│ │ │ ├─ ListNav
│ │ │ ├─ Item //일기 아이템 map으로 돌리기
│ │ ├─ modal/
│ │ │ ├─ PreviewModal
│ │ │ ├─ DeleteModal
│ │ ├─ edit/
│ │ │ ├─ EditNav
│ │ │ ├─ SelectEmoji //이모지 선택박스
│ │ │ ├─ Post //한줄 일기
│ │ │ ├─ Picture //오늘의 사진
│ │ ├─ common/
│ │ │ ├─ Header
│ │ │ ├─ Footer
│ ├─ pages/ //페이지 컴포넌트들 (라우팅)
│ │ ├─ LoginPage
│ │ ├─ SignupPage
│ │ ├─ ListPage
│ │ └─ EditPage
│ ├─ styles/ //CSS 스타일 및 스타일 유틸리티
│ └─ App.js / App.tsx
├─ public/
│ ├─ index.html //HTML 템플릿 파일
│ ├─ images
│ └─ ...
├─ package.json //프로젝트 설정 및 의존성
├─ .eslintrc.json //ESLint 설정 파일
├─ .prettierrc //Prettier 설정 파일
└─ ...
Vite를 사용하면 CRA보다 빌드를 빠르게 할 수 있다고하여 이번 프로젝트에서는 vite를 사용해볼 것이다.
npm create vite
npm create vite@latest 프로젝트명 -- --template react
Vite로 리액트 프로젝트 생성 시 기본으로 eslinttrc.cjs
파일이 생성된다.
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
"plugin:react/recommended",
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react-hooks/recommended",
"plugin:prettier/recommended",
],
ignorePatterns: ["dist", ".eslintrc.cjs"],
parser: "@typescript-eslint/parser",
plugins: ["react-refresh"],
rules: {
"react-refresh/only-export-components": [
"warn",
{ allowConstantExport: true },
],
"no-unused-vars": "off", // 사용하지 않는 변수 경고 끄기
indent: ["error", 2], // 들여쓰기 스타일 설정 (2칸 들여쓰기)
semi: ["error", "always"], // 세미콜론(;) 사용 강제 설정
},
};
사용하면서 추가되는 rules은 추후 수정 예정
prettier 설치
npm i --save-dev --save-exact prettier
prettier 설정
{
"arrowParens": "always",
"bracketSameLine": false,
"bracketSpacing": true,
"semi": true,
"singleQuote": false,
"jsxSingleQuote": false,
"quoteProps": "as-needed",
"trailingComma": "all",
"singleAttributePerLine": false,
"htmlWhitespaceSensitivity": "css",
"vueIndentScriptAndStyle": false,
"proseWrap": "preserve",
"insertPragma": false,
"printWidth": 80,
"requirePragma": false,
"tabWidth": 2,
"useTabs": false,
"embeddedLanguageFormatting": "auto"
}
prettier 공식문서에서 각 설정이 어떻게 사용되는지 테스트해볼 수 있다.
css 라이브러리로 emotion을 사용하였다.
npm i @emotion/react
emotion 패키지로 css/react/styled 가 있는데 styled는 styled-componenets와 거의 비슷해서 @emotion/react
패키지를 사용해볼 것이다.
라우팅 기능을 위해 react-router-dom 라이브러리 사용
npm install react-router-dom
데이터, 사진 관리 및 인증(로그인) 기능을 위해 사용한다.
로그인 후 사용자의 정보를 보관하기 위해 사용한다.
API 사용을 위해 도입했다.
카카오 로그인은 나중에 더 큰 프로젝트 또는 현업에 가서도 유용하게 사용될 것이라고 생각하여 이번 프로젝트에서 시도해볼 것이다.
로그인 기능 구현 시 도입할 우선순위
로그인 후에 바로 보여지는 리스팅 페이지(일기 목록을 보여주는 페이지)에서 일기 개수에 따라 페이지네이션 기능을 추가해보려고 한다.
다만 필수 기능은 아니므로 프로젝트 시간에 따라 후순위로 미뤄둔다.
npm install react-paginate --save
이번 프로젝트에서는 지난 팀 토이프로젝트에서 경험해보지 못한 기능이나 라이브러리 위주로 구현하는 것을 목표로 한다.
추가로 상태 관리 라이브러리 redux를 사용할 수 있도록 한다.