리엑트 초기 설정
1.1 Import Project
Chamomile Admin React
를 로컬 환경에서 시작하는 과정을 설명합니다.
준비 사항
nodejs : 16.14.0 이상 필요 (Nextjs 13버전 최소 사양)
vscode 설치 (VSCode 다운로드)
1. GitLab에서 프로젝트 클론하기
GitLab에 로그인하고 admin-front-react 프로젝트로 이동합니다.
"Clone" 버튼을 클릭하고 HTTPS 또는 SSH URL을 복사하고 터미널에서 실행하여 클론합니다.
소스코드 압축파일을 다운로드하여 로컬 경로에 압축해제하여 사용해도 됩니다.
2. nodejs 설치 확인 및 npm 패키지 설치
노드 설치 확인
프로젝트 루트 경로에서 npm 패키지 설치
3. local 환경변수 파일 확인
루트 경로에 .env.dev를 복사하여
.env.local
파일을 생성해주고, NEXTAUTH_URL, NEXT_PUBLIC_API_URL_BASE 에 개발서버 URL 을 입력하는 등의 환경변수 셋팅을 합니다.
4. 프로젝트 실행
아래 명령어로 프로젝트를 실행합니다.
VSCode Extension
VSCode 확장기능을 설치하면 코드 편집, 디버깅, 소스 제어, 코드 형식화 등 다양한 작업을 더 쉽게 수행할 수 있습니다.
Auto Close Tag: HTML/XML 태그를 자동으로 닫아주는 확장 기능입니다.
Color Highlight: 코드 내 색상 값을 시각적으로 표시해주는 확장 기능입니다.
Comment Anchors: 주석에 앵커를 추가하여 코드 내 중요한 위치를 쉽게 찾을 수 있도록 도와줍니다.
ESLint: JavaScript 및 TypeScript 코드의 문법 오류를 실시간으로 검사하고 수정할 수 있도록 도와줍니다.
Prettier - Code formatter: 코드 형식화를 자동으로 수행해주는 확장 기능입니다.
Tailwind CSS IntelliSense: Tailwind CSS 클래스 이름에 대한 자동 완성 및 IntelliSense 기능을 제공합니다.
1.2 ESLint
이 문서는 프로젝트에서 사용되는 ESLint 설정과 관련된 컨벤션 및 가이드를 설명합니다. 이 가이드를 통해 팀원들이 일관된 코드 스타일을 유지하고, 코드 품질을 높일 수 있습니다.
Introduction
이 프로젝트는 ESLint를 사용하여 코드 품질을 유지하고, 일관된 코드 스타일을 적용합니다. ESLint는 JavaScript 및 TypeScript 코드에서 문제를 식별하고 수정하는 데 도움을 줍니다.
Installation
프로젝트에서 ESLint를 사용하는 방법은 다음과 같습니다:
설치: 프로젝트의 루트 디렉토리에서 ESLint와 필요한 플러그인 및 확장을 설치합니다.
npm install eslint eslint-config-next eslint-config-prettier eslint-plugin-react eslint-plugin-tailwindcss @typescript-eslint/parser @tanstack/eslint-plugin-query --save-dev검사: 다음 명령어를 사용하여 코드 검사를 수행합니다.
npx eslint .자동 수정: 다음 명령어를 사용하여 자동으로 수정할 수 있는 문제를 해결합니다.
npx eslint . --fixPrettier와 통합: Prettier와 ESLint를 통합하여 코드 포맷팅을 자동으로 적용합니다.
npx prettier --write .
기본 설정
프로젝트의 ESLint 설정은 .eslintrc.json
파일에 정의되어 있습니다. 이 파일은 프로젝트의 루트 디렉토리에 위치하며, 다음과 같은 기본 설정을 포함합니다:
확장 및 플러그인
확장
프로젝트에서는 다음과 같은 ESLint 확장을 사용합니다:
next/core-web-vitals
: Next.js 프로젝트의 핵심 웹 바이탈 규칙을 포함합니다. 이 확장은 Next.js 애플리케이션의 성능과 접근성을 향상시키는 데 도움을 줍니다.prettier
: Prettier와의 통합을 통해 코드 포맷팅을 자동으로 적용합니다. 이 확장은 코드 스타일을 일관되게 유지하는 데 도움을 줍니다.plugin:tailwindcss/recommended
: Tailwind CSS와 관련된 권장 규칙을 포함합니다. 이 확장은 Tailwind CSS를 사용하는 프로젝트에서 일관된 스타일을 유지하는 데 도움을 줍니다.plugin:@tanstack/eslint-plugin-query/recommended
: TanStack Query와 관련된 권장 규칙을 포함합니다. 이 확장은 TanStack Query를 사용하는 프로젝트에서 올바른 쿼리 사용을 보장하는 데 도움을 줍니다.
플러그인
프로젝트에서는 다음과 같은 ESLint 플러그인을 사용합니다:
tailwindcss
: Tailwind CSS와 관련된 규칙을 추가합니다. 이 플러그인은 Tailwind CSS 클래스 이름의 유효성을 검사하고, 잘못된 사용을 방지하는 데 도움을 줍니다.
사용자 정의 규칙
다음은 프로젝트에서 사용자 정의한 규칙들입니다:
@next/next/no-html-link-for-pages
: Next.js 페이지 링크에 대한 규칙을 비활성화합니다. 이 규칙은 Next.js의Link
컴포넌트를 사용하지 않고도 HTML 링크를 사용할 수 있도록 허용합니다.react/jsx-key
: JSX 요소에 키를 지정하는 규칙을 비활성화합니다. 이 규칙은 리스트 렌더링 시 키를 지정하지 않아도 경고를 발생시키지 않습니다.tailwindcss/no-custom-classname
: 사용자 정의 Tailwind CSS 클래스 이름 사용을 비활성화합니다. 이 규칙은 Tailwind CSS의 기본 클래스 이름만 사용하도록 권장합니다.react-hooks/exhaustive-deps
: React 훅의 의존성 배열을 검사하는 규칙을 비활성화합니다. 이 규칙은 훅의 의존성 배열을 명시적으로 관리하지 않아도 경고를 발생시키지 않습니다.@tanstack/query/exhaustive-deps
: TanStack Query 훅의 의존성 배열을 검사하는 규칙을 비활성화합니다. 이 규칙은 TanStack Query 훅의 의존성 배열을 명시적으로 관리하지 않아도 경고를 발생시키지 않습니다.
설정
Tailwind CSS 설정
callees
: Tailwind CSS 클래스 이름을 포함하는 함수 이름을 지정합니다. 이 프로젝트에서는cn
함수를 사용합니다.config
: Tailwind CSS 설정 파일의 경로를 지정합니다. 기본값은tailwind.config.js
입니다.
Next.js 설정
rootDir
: Next.js 프로젝트의 루트 디렉토리를 지정합니다. 기본값은./
입니다.
타입스크립트 설정
타입스크립트 파일(*.ts
, *.tsx
)에 대해 다음과 같은 설정을 적용합니다:
parser
: 타입스크립트 파일을 파싱하기 위해@typescript-eslint/parser
를 사용합니다.
.eslintignore 파일 설명
.eslintignore
파일은 ESLint가 무시해야 할 파일 및 디렉토리를 지정하는 데 사용됩니다. 이 파일에 정의된 경로는 ESLint 검사에서 제외됩니다. 아래는 이 프로젝트의 .eslintignore
파일에 포함된 항목과 그 설명입니다:
dist/*
: 빌드 결과물이 저장되는dist
디렉토리 내의 모든 파일을 무시합니다. 빌드된 파일은 일반적으로 린트 검사를 필요로 하지 않습니다..cache
: 캐시 파일이 저장되는.cache
디렉토리를 무시합니다. 캐시 파일은 린트 검사에서 제외해야 합니다.public
: 정적 파일이 저장되는public
디렉토리를 무시합니다. 이 디렉토리에는 이미지, 폰트, HTML 파일 등이 포함될 수 있으며, 린트 검사가 필요하지 않습니다.node_modules
: 프로젝트의 종속성 패키지가 저장되는node_modules
디렉토리를 무시합니다. 이 디렉토리에는 외부 라이브러리 코드가 포함되어 있으며, 린트 검사가 필요하지 않습니다.*.esm.js
: 확장자가.esm.js
인 모든 파일을 무시합니다. 이 파일들은 일반적으로 ES 모듈 형식으로 번들된 파일로, 린트 검사가 필요하지 않습니다.
.eslintignore 파일 예시
1.3 Prettier
Introduction
prettier.config.js
파일은 Prettier의 설정을 정의하는 파일입니다. Prettier는 코드 포맷터로, 일관된 코드 스타일을 유지하고 자동으로 코드 포맷팅을 적용하는 데 사용됩니다.
아래는 이 프로젝트의 prettier.config.js
파일에 포함된 설정과 그 설명입니다
설정에 관련된 자세한 사항은 아래 문단를 확인해세요
Installation
먼저, 프로젝트 디렉토리에서 Prettier를 설치합니다. npm 또는 yarn을 사용하여 설치할 수 있습니다.
Prettier 플러그인 설치
프로젝트 설정 파일에서 사용된 플러그인들을 설치합니다.
Prettier 포맷팅 적용
아래 명령어를 프로젝트 루트경로에서 실행하여 프로젝트 전체에 Prettier 포맷팅을 적용할 수 있습니다.
설정설명
endOfLine: 'lf'
: 줄바꿈 문자를 Unix 스타일(\n
)로 설정합니다. 이는 크로스 플랫폼 호환성을 유지하는 데 도움을 줍니다.semi: true
: 모든 문장의 끝에 세미콜론을 추가합니다.singleQuote: true
: 문자열에 홑따옴표('
)를 사용합니다.tabWidth: 2
: 들여쓰기에 사용할 스페이스의 개수를 2칸으로 설정합니다.printWidth: 100
: 한 줄의 최대 길이를 100자로 설정합니다. 이는 코드 가독성을 높이는 데 도움을 줍니다.useTabs: false
: 들여쓰기에 탭 대신 스페이스를 사용합니다.bracketSpacing: true
: 객체 리터럴의 중괄호 내에 스페이스를 추가합니다. 예:{ foo: bar }
trailingComma: 'es5'
: ES5에서 유효한 곳에만 후행 쉼표를 추가합니다. 예: 객체, 배열, 함수 매개변수 목록 등.arrowParens: 'always'
: 화살표 함수의 매개변수가 하나일 때도 괄호를 항상 추가합니다. 예:(x) => x
importOrder
: import 문을 정렬하는 규칙을 정의합니다. 특정 패턴에 따라 import 문을 그룹화하고 정렬합니다.^(react/(.*)$)|^(react$)
: React 관련 import를 최상단에 배치합니다.^(next/(.*)$)|^(next$)
: Next.js 관련 import를 그 다음에 배치합니다.<THIRD_PARTY_MODULES>
: 서드파티 모듈을 그 다음에 배치합니다.'^types$'
:types
모듈을 그 다음에 배치합니다.'^@/types/(.*)$'
: 프로젝트 내 타입 정의를 그 다음에 배치합니다.'^@/config/(.*)$'
: 프로젝트 내 설정 파일을 그 다음에 배치합니다.'^@/utils/(.*)$'
: 유틸리티 함수들을 그 다음에 배치합니다.'^@/hooks/(.*)$'
: 커스텀 훅을 그 다음에 배치합니다.'^@/components/ui/(.*)$'
: UI 컴포넌트를 그 다음에 배치합니다.'^@/components/(.*)$'
: 나머지 컴포넌트를 그 다음에 배치합니다.'^@/styles/(.*)$'
: 스타일 파일을 그 다음에 배치합니다.'^@/app/(.*)$'
: 애플리케이션 관련 파일을 그 다음에 배치합니다.^[./]
: 상대 경로 import를 마지막에 배치합니다.
importOrderSeparation: false
: import 그룹 사이에 빈 줄을 추가하지 않습니다.importOrderSortSpecifiers: true
: import 문 내에서 명시자를 정렬합니다.importOrderBuiltinModulesToTop: true
: 내장 모듈을 최상단에 배치합니다.importOrderParserPlugins
: import 정렬 시 사용할 파서 플러그인을 지정합니다. 여기서는typescript
,jsx
,decorators-legacy
를 사용합니다.importOrderMergeDuplicateImports: true
: 중복된 import 문을 병합합니다.importOrderCombineTypeAndValueImports: true
: 타입과 값 import를 병합합니다.plugins
: Prettier 플러그인을 지정합니다. 여기서는@ianvs/prettier-plugin-sort-imports
와prettier-plugin-tailwindcss
를 사용합니다.
1.4 File Structure
1.5 Layout Structure
화면 레이아웃 구성입니다
