Environment Setup
Git Convention
Code Convention
Folder Structure
Environment Setup (wiki 참조)
Git Convention
Code Convention
Folder Structure
접두사 | 설명 |
---|---|
init | 프로젝트 초기 설정 |
feat | 새 기능 추가 |
fix | 버그 수정 |
style | 코드 스타일 변경 (세미콜론 누락 등) |
docs | 문서 (README.md 등) |
refactor | 리팩토링 |
hotfix | 핫픽스 |
chore | 기타 작업 |
작업태그(키워드): 작업내용 (#이슈번호)
- 작업태그: 작업태그 확인
- 키워드 (생략 가능): 작업 키워드
- 작업내용: 한국어 또는 영어로 작성하며, 영어로 작성 시에는 동사원형으로 시작
- 이슈번호 (생략 가능): Github issue 번호
- e.g
feat(time_table): create TimeTable (#1)
fix(booth): 부스 데이터 수정 (#5)
-
release
- 최종 배포 branch
-
develop
- 개발 메인 branch
- develop branch로 merge시 PR 작성
- PR Approve 2명 이상 필요
-
feat/**
- 기능 구현 시 branch 이름을
feat/featureName
로 분기 - e.g
feat/main-page
- 기능 구현 시 branch 이름을
-
fix/**
- 오류 수정시 branch 이름을
fix/bugName
로 분기 - e.g
fix/booth-page-ui
- 오류 수정시 branch 이름을
- PR Template에 맞춰 작성
CSS
Code style
Naming
Image import
Secret key
- CSS 파일은 동일 폴더내에
컴포넌트명.css.ts
로 관리합니다.
// app.css.ts
import { style } from "@vanilla-extract/css";
export const container = style({
backgroundColor: "lightblue",
});
// App.tsx
import { container } from "./App.css.ts";
function App() {
return (
<div>
<h1 className={container}>Hello, KNU Festival!</h1>
</div>
);
}
export default App;
- prettier에서 자동으로 교정
- 코드 작성후 commit 및 PR 시에
npm run check
명령어 실행하여 확인 - 만약 prettier에서 오류가 뜬다면
npm run prettier
로 코드 스타일 변경
- jsx를 반환하는 함수 PascalCase
- 그렇지 않다면 camelCase
// PascalCase
function Home() {
return <div>Hello</div>;
}
// camelCase
function sum() {
return 1+2;
}
- camelCase로 작성
- 변하지 않는 값은 대문자로 작성
// camelCase
const person: Person = { name: "Kim", age: 20 };
const PIE = 3.14;
- PascalCase로 작성
type Person = { name: string; age: number };
- 코드에서 jsx를 포함하고 있으면 파일명
PascalCase.tsx
- 그렇지 않다면
camelCase.ts
// Home.tsx
function Home() {
return <div>Hello</div>;
}
// sum.ts
function sum() {
return 1+2;
}
- 이미지 경로 작성시 절대로
string
및require
사용 금지 - import 이용
import image1 from "../assets/image.png";
const App = () => {
// 좋은 예
return <img src={image1} />
// 나쁜 예 1: <img src="../assets/image.png" />
// 나쁜 예 2: <img src=require("../assets/image.png")>
}
.env
에서 key 관리- 절대로 git에 올리지 말것
public
src
src/assets
src/components
src/pages
src/resources
src/shared
src/App.tsx
src/main.tsx
src/vite-env.d.ts
나머지
├── root
│ ├── public
│ ├── src
│ │ ├── assets
│ │ ├── components
│ │ ├── pages
│ │ ├── resources
│ │ ├── shared
│ │ │ ├── firebase
│ │ │ ├── types
│ │ │ └── util
│ │ ├── App.tsx
│ │ ├── main.tsx
│ │ └── vite-env.d.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ ├── README.md
│ ├── eslint.config.js
│ ├── index.html
│ ├── package-lock.json
│ ├── package.json
│ └── vite.config.ts
robots.txt
와 같이 소스 코드에서 참조되지 않는 에셋 저장- URL을 얻기 위해 굳이
import
할 필요 없는 에셋 저장
- 코드에 사용될 에셋 저장
- 앱 component 저장
- 앱 page component 저장
- 코드 내 하드코딩이 필요한 데이터 저장
- 여러 component에서 사용되는 코드들 저장
shared/firebase
: firebaseshared/types
: type 저장shared/util
: 유틸 함수 저장
- 앱 메인 진입점
- root에서 Wrapper 필요할시 해당 파일에서 감싸기
createRoot(document.getElementById("root")!).render(
<StrictMode>
<App />
</StrictMode>,
);
// StrictMode Wrapper
- vite에서 build시 확인하는 global types
- 이하 생략 ...