-
-
Notifications
You must be signed in to change notification settings - Fork 3
Contributing
์ด ํ๋ก์ ํธ์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ธฐ์ฌ๋ ์ธ์ ๋ ํ์์ ๋๋ค! ๐
๋ณธ ํ๋ก์ ํธ๋ GitHub์ ํ ๋ฆฌํ์คํธ(PR) ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ์ฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค.
๋จผ์ ํ๋ก์ ํธ๋ฅผ ํฌํฌํ๊ณ PR์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
- Bun ์ค์นํ๊ธฐ
-
ํ๋ก์ ํธ๋ฅผ ํฌํฌํ๊ณ PR์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํด์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ ์ ๊ณ์ ์ ํฌํฌํ๊ณ , ํด๋ก ํฉ๋๋ค.
- ์ด ๋ ํด๋ก ํ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ์คํธ๋ฆผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋๊ธฐํํ๋ ์ค์ ์ ํจ๊ป ์ ์ฉํ๋ฉด ๊ธฐ์ฌ์ ์ฉ์ดํฉ๋๋ค.
- ํฐ๋ฏธ๋์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค:
cd path/to/daleui # ์์กด์ฑ ์ค์น bun install # Storybook ์คํ (๋์์ธ ์์คํ ๊ธฐ์ฌ ์) bun run sb # or bun run storybook # ๋ง์ผํ ์น์ฌ์ดํธ ์คํ (๋ง์ผํ ์น์ฌ์ดํธ ๊ธฐ์ฌ ์) bun run dev
- Figma: ๋์์ธ, ํ๊ณ
- React: UI renderer
- Panda: Styling engine
- Ark UI: Headless UI components
- Storybook: ์ปดํฌ๋ํธ ์์ฐ, ๋ฌธ์ํ
- Chromatic: UI Preview/Tests/Reviews
- Vite: Bundler
- Vitest: Test Runner, Test Matcher
- TestingLibrary: UI Testing
- HappyDom: Testing DOM
- ESLint: Linter
- Prettier: Formatter
- GitHub Actions: CI/CD
- Bun: JS Runtime
- ๋ฌด๋ฃ ํ๋ก์ ํธ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ธ ๊นํ๋ธ ํ๋ก์ ํธ๋ฅผ ํตํด ์ด์(Jira ํฐ์ผ๊ณผ ๊ฐ์ ๊ฐ๋ )๋ฅผ ๊ด๋ฆฌํด ์ฃผ์ธ์.
- ์ด์๋ฅผ ์์ฑํ ๋ ์ ํ(Type)์ ๋ฐ๋์ ์ ํํด์ฃผ์๊ณ , ํ๋ก์ ํธ์ ์ถ๊ฐ ํ ์ฐ์ ์์(Priority)์ ์์ ์์ ์๊ฐ(Est)๋ ํจ๊ป ๋ฃ์ด์ฃผ์ธ์.
- ์ด์๋ฅผ ์์ฑํ ๋ ์คํ๋ฆฐํธ(Sprint)์ ์ํ(Status)๋ ๋น์๋์ด ์ผ๋จ ๋ฐฑ๋ก๊ทธ(Backlog)์ ๋๋๋ก ํด ์ฃผ์ธ์.
- ์ด์๋ ํ ํ์ ๋ Grooming, Triage, Planning ๊ณผ์ ์ ๊ฑฐ์น ํ์ ์คํ๋ฆฐํธ์ ์ถ๊ฐํด ์ฃผ์ธ์.
- ๊ธด๊ธ ์ด์๊ฐ ์๊ฑฐ๋ ์คํ๋ฆฐํธ์ To Do ์ด์๊ฐ ์์ง๋์์ ๋๋ ๋์ค์ฝ๋์์ ์ํต ํ์ ํ์ฌ ์คํ๋ฆฐํธ์ ์ถ๊ฐํด์ฃผ์ธ์.
- ์์จ์ ์ธ ํ์ ๊ณผ ์๋ฐ์ ์ธ ๊ธฐ์ฌ๋ฅผ ์ํด ํน๋ณํ ์ฌ์ ๊ฐ ์๋ค๋ฉด ์ด์๋ฅผ ์์ฑํ ๋ ๋ด๋น์๋ฅผ ์ค์ ํ์ง ๋ง์ธ์.
- ์ด์ ์ํ๋ ์คํ๋ฆฐํธ์ ์ถ๊ฐ๋์์ ๋ ๋ถํฐ To Do๋ก ์ค์ ํด์ฃผ์ธ์.
- ์์ ์ ์์ํ์๋ฉด ์ด์์ ์ํ๋ฅผ ๋ฐ๋์ In Progress๋ก ์ฎ๊ฒจ์ฃผ์ธ์. (๋ง์ด ๊น๋จน๋ ๋ถ๋ถ์ด๋ ๊ผญ ์ง์ผ ์ฃผ์ธ์.)
- ์ด์๊ฐ ์ฐ๊ฒฐ๋ Pull Request๊ฐ ๋ณํฉ๋๋ฉด ์ด์๋ ์๋์ผ๋ก Done ์ํ๋ก ์ ํ๋ฉ๋๋ค.
- ๋์์ 2๊ฐ ์ด์ ์ด์๋ฅผ ํ ๋นํ์ง ์๋๋ก ์ฃผ์ํด์ฃผ์ธ์. WIP๊ฐ 2๋ณด๋ค ์ปค์ง๋ฉด ํ์ ๋ฆฌ๋ทฐ ๋ถ๋ด์ด ์ปค์ง๋ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
- ์๋ธ ์ด์๋ Spike ํฐ์ผ์์ ํ์๋ Action ํฐ์ผ์ ํํด ์ฌ์ฉํด ์ฃผ์ธ์.
- ์๋ธ ์ด์๊ฐ ์๋ฃ๋์ง ์์๋, ์์ Spike ํฐ์ผ(Parent Issue)์ ์๋ฃ ์ฒ๋ฆฌํด ์ฃผ์ธ์.
- ์ด์๊ฐ ์คํ๋ฆฐํธ 1ํ ์ด์ ์ด๊ด๋ ๊ฒฝ์ฐ
spilloverlabel์ ์ถ๊ฐํด์ฃผ์ธ์. - ์ด์๊ฐ ์คํ๋ฆฐํธ 2ํ ์ด์ ์ด๊ด๋ ๊ฒฝ์ฐ ๊ณต๋ก ํํ๊ณ blocker ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ ํด๊ฒฐ ๋ฐฉํฅ์ ์ ๋ฆฌํด์ฃผ์ธ์.
-
ํ๋ก์ ํธ ๋ณด๋์์
To Do์ํ์ ํฐ์ผ์ ์ ํํ๊ณ ๋ณธ์ธ์๊ฒ ํ ๋นํด ์ฃผ์ธ์. - ํ๋ก์ ํธ ์ค์
- ๋จผ์ ํ๋ก์ ํธ ์ค์ ๊ฐ์ด๋๋ฅผ ์๋ฃํด ์ฃผ์ธ์.
- ๋ธ๋์น ์์ฑ
-
main๋ธ๋์น์์ ์๋ก์ด feature ๋ธ๋์น๋ฅผ ์์ฑํด ์ฃผ์ธ์. - ๋ธ๋์น ์ด๋ฆ์๋
-,_์ธ์ ํน์๋ฌธ์๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์.
์ฐธ๊ณ ์ด์
- ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ์ปค๋ฐ
- ๋ธ๋์น ๋ด์์ ์์ค ์ฝ๋๋ฅผ ์์ ํ๊ณ ์ปค๋ฐํด ์ฃผ์ธ์.
- ๋ณ๊ฒฝ์ด ๋ชจ๋ ์๋ฃ๋๋ฉด ํฌํฌ๋ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ธ๋์น๋ฅผ ํธ์ํด ์ฃผ์ธ์.
- ํ ์คํธ ์์ฑ
- ๊ธฐ์ฌํ ์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๋์ง ํ์ธํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด ์ฃผ์ธ์.
- PR ์์ฑ
-
Pull Requests ํ์ด์ง์์ ์๋ก์ด PR์ ์์ฑํด ์ฃผ์ธ์.
-
PR ์ ๋ชฉ๊ณผ ์ค๋ช ์ ๊ฐ๊ธ์ ํ๊ตญ์ด๋ก ์์ฑํด์ฃผ์ธ์. ์ด์ ์ ๋ชฉ๊ณผ ์ผ์นํ๋๋ก ์์ฑํด ์ฃผ์ธ์.
-
PR์ด ๋ฑ๋ก๋ ์ด์์ ์ฐ๊ด๋๋ค๋ฉด, PR ์์ฑ ํ ์ค๋ฅธ์ชฝ ์ฌ์ด๋๋ฐ
PR ์ด์ ์ฐ๊ฒฐ ์์Developmentํญ๋ชฉ์์ ํด๋น ์ด์๋ฅผ ์ ํํด ์ฐ๊ฒฐํด์ฃผ์ธ์.
- PR ๋ฆฌ๋ทฐ ๋ฐ ๋ณํฉ
- ์ต์ ํ ๋ช ์ด์์ ๊ด๋ฆฌ์์๊ฒ PR ๊ฒํ ์ ์ฝ๋ฉํธ๋ฅผ ๋ฐ์ ์ฃผ์ธ์.
- ๋ณ๊ฒฝ ์์ฒญ์ด ์์ ๊ฒฝ์ฐ, ์์ ์ ๋ฐ์ํ ํ ๋ค์ ํธ์ํ๊ณ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํด ์ฃผ์ธ์.
- ๋์์ธ ๋ณ๊ฒฝ์ด ์์ ๊ฒฝ์ฐ, PR์ ui ํ๊ทธ๋ฅผ ๋ฌ์์ Chromatic์ ์คํํด ์ฃผ์ธ์.
- UI Review ์ฒดํฌ์์ ํด๋น ๋์์ธ์ ๋ด๋นํ ๋์์ด๋์๊ฒ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํด ์ฃผ์ธ์. (์์ฑ๋ PR์ ํ๋จ Merge ๋ถ๋ถ์์ ํ์ธํ ์ ์์) [็ปๅ:image]
[็ปๅ:image]UI Review: ์์ ๋ด์ญ์ ๋์์ธ ๋ด๋น์์๊ฒ ํ์ธ ์์ฒญํ๋ ์์
UI Tests: ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋์น ์์ UI ๋ณํ๋ฅผ ์ผ์ผํค์ง ์์๋์ง, Chromatic ์ค๋ ์ท์ ํ๋์ฉ ๋น๊ตํ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ์ง์ ํ์ธํ๋ ์์
-
์ต์ 1๊ฐ์ ์น์ธ์ ๋ฐ์ ํ
main๋ธ๋์น์ ๋ณํฉํด ์ฃผ์ธ์. - ์ดํ ๋ฆด๋ฆฌ์ฆ๋ฅผ ํตํด ๊ธฐ์ฌํ ๋ด์ฉ์ด ๋ฐฐํฌ๋ฉ๋๋ค.
- PR ๋ณํฉ์ ํ๊ธฐ ์ํด์๋ ์ต์ 1๋ช ์ ๋๋ฃ ๊ฐ๋ฐ์๋ก๋ถํฐ ์น์ธ์ ๋ฐ์์ผ ํ์ง๋ง, ํ์ง ํฅ์์ ์ํด์ ๊ธด๊ธ ๊ฑด์ด ์๋๋ผ๋ฉด 2๊ฐ์ ์น์ธ์ ๋ฐ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
- [Proposed] "Resolve conversation" ๋ฒํผ์ ์ฝ๋ ๊ฒํ ์๊ฐ ํผ๋๋ฐฑ์ด ๋ณธ์ธ์ด ์๋ํ ๋๋ก ์กฐ์น๋์๋์ง ํ์ธํ๋ ์ฐจ์์์ ๋๋ฆ ๋๋ค. ์ฝ๋ ์์ฑ์๊ฐ ์์๋ก Resolved ํ์ํ ์ ์คํด๊ฐ ์๊ธธ ์ ์์ต๋๋ค.
- ํญ์ ์์กด์ฑ์ ์ต์ ์ํ๋ก ์ ์งํ๋๋ก Dependabot์ ์ฝ๋ ์ ์ฅ์์ ์ค์ ํด๋์์ต๋๋ค.
- Dependabot์ด ์ฌ๋ฆฐ PR์ ๋ฆ์ง ์๊ฒ ๊ฒํ ๋ฐ ๋ณํฉํ๊ณ ์๋ก์ด ๋ฒ์ ์ด ์ผ์ผํค๋ breaking changes๋ฅผ ๋์ํ๋ ์์ ์ ํ ๊ฐ๋ฐ์ ๋ชจ๋์ ๊ณต๋ ์ฑ ์์ ๋๋ค.
- Dependabot์ด ์ฌ๋ฆฐ PR์ ๋ฐ๋์ PR ์ฝ๋ฉํธ๋ฅผ ํตํด์ Dependabot์๊ฒ ์ํ์๋ ์์ ์ ์์ผ์ฃผ์ธ์. ์ง์ ์์ ํ์๋ฉด Dependabot์ ํด๋น PR์ ๋ ์ด์ ์๋์ผ๋ก ๊ด๋ฆฌํด์ฃผ์ง ์์ต๋๋ค.
main ๋ธ๋์น์ ํ์ง ๊ธฐ์ค์ ๋ฏธ๋ฌํ๋ ์ฝ๋๊ฐ ์ ์ ์ด ๋์ง ์๋๋ก PR์ ์ฌ๋ฆฌ์๋ฉด ์๋์ผ๋ก ํ์ง ๊ฒ์ฌ๊ฐ ์งํ๋๊ณ ์คํจํ ๊ฒฝ์ฐ ๋ณํฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ ํ์ง ๊ฒ์ฌ๋ ๊ฐ๋ฐ์๊ฐ ๋ก์ปฌ ํ๊ฒฝ์์ ์ง์ ์งํํ์ค ์๋ ์์ต๋๋ค.
Prettier๋ฅผ ํตํด์ ์ผ๊ด์ ์ธ ์ฝ๋ ํฌ๋ฉงํ ์ ์ ์งํ๊ณ ์์ต๋๋ค. VSCode ์ฌ์ฉ์ ๋ถ๋ค์ Prettier ์ต์คํ ์ ์ ์ฐ์๋ฉด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์๋์ผ๋ก ์ฝ๋๋ฅผ ํฌ๋ฉงํ ํ ์ ์์ด์ ํธํ๋ ์ถ์ฒ๋๋ฆฝ๋๋ค.
Prettier options ๋ ๊ธฐ๋ณธ ์ค์ ๊ฐ์ผ๋ก ํด์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
ESLint๋ฅผ ํตํด์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ ์์ต๋๋ค. ๋ฆฐํ ๊ท์น์ ์๋ฐํ๊ณ ์๋ ์ฝ๋๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
# ์ ์ฒด ๊ฒ์ฌ bun run lint # ํน์ ํ์ผ ๊ฒ์ฌ bun run lint src/components/TextInput/TextInput.tsx
TypeScript๋ฅผ ํตํด์ ์ ์ ํ์ ๊ฒ์ฌ๋ฅผ ํ๊ณ ์์ต๋๋ค. ํ์ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
bunx tsc
flowchart TD
MAIN[main ๋ธ๋์น]
RELEASE_PR["๋ฒ์ bump &<br/>Release PR ์์ฑ<br/>(GitHub Action)"]
TAG["ํ๊ทธ ์์ฑ &<br/>GitHub Release Draft ์์ฑ<br/>(GitHub Action)"]
PUBLISH["npm publish ์คํ<br/>(GitHub Action)"]
MAIN -->|"GitHub UI์์<br/>Release PR ์คํ<br/>(๊ฐ๋ฐ์)"| RELEASE_PR
RELEASE_PR -->|"Release PR ๋ฆฌ๋ทฐ & ๋จธ์ง<br/>(๊ฐ๋ฐ์)"| TAG
TAG -->|"GitHub Release ๋ฐํ<br/>(๊ฐ๋ฐ์)"| PUBLISH
์ฝ๋ ์คํ์ผ, ๋ค์ด๋ฐ ๊ท์น, PR ์์ฑ ๊ท์น ๋ฑ์ ์ดํดํ๊ธฐ ์ํด ๋จผ์ ์ปจ๋ฒค์ ๋ฌธ์๋ฅผ ์ฝ์ด์ฃผ์ธ์.