μ½κ³ κ°νΈν μ¬κ³ κ΄λ¦¬, λ§μλ μ¬κ³ μ ν¨κ» μμν΄μ! - λ°λ‘κ°κΈ°
- β μ μ μλ: λ§€μΌ μμ νμΌμ μ 리νλ μ¬κ³ λ₯Ό λ§μλ μ¬κ³ μμ κ°νΈνκ² μ λ ₯νκ³ , λ¨μ μλμ μμΈ‘ν μ μμ΄μ.
Category | Used |
---|---|
JavaScript | JavaScript ES6 |
React version | 18.2.0 |
react-dom | 18.2.0 |
react-router-dom | 6.22.3 |
react-scripts | 5.0.1 |
redux | 5.0.1 |
styled-components | 6.1.8 |
API Docs | Swagger, Notion |
CI/CD | Vercel |
Monitoring | Sentry |
λνν κ°μ λͺ¨λμμ ν
μ€νΈ μ€νκΈ°λ₯Ό μμν©λλ€.
μμΈν λ΄μ©μ ν
μ€νΈ μ€ν μΉμ
μ μ°Έμ‘°νμΈμ.
build
ν΄λμ νλ‘λμ
μ© μ±μ λΉλν©λλ€.
νλ‘λμ
λͺ¨λμμ Reactλ₯Ό μ¬λ°λ₯΄κ² λ²λ€λ§νκ³ μ΅κ³ μ μ±λ₯μ μν΄ λΉλλ₯Ό μ΅μ νν©λλ€.
λΉλλ μμΆλκ³ νμΌ μ΄λ¦μλ ν΄μκ° ν¬ν¨λ©λλ€.
μ±μ΄ λ°°ν¬ν μ€λΉκ° μλ£λμμ΅λλ€!
μμΈν λ΄μ©μ λ°°ν¬ μΉμ μ μ°Έμ‘°νμΈμ.
μ°Έκ³ : μ΄ μμ
μ λλ릴 μ μμ΅λλ€. ν λ² eject
λ₯Ό νλ©΄ λ€μ λλ릴 μ μμ΅λλ€!
λΉλ λꡬ λ° κ΅¬μ± μ νμ λ§μ‘±νμ§ μλ κ²½μ° μΈμ λ μ§ eject
ν μ μμ΅λλ€. μ΄ λͺ
λ Ήμ νλ‘μ νΈμμ λ¨μΌ λΉλ μ’
μμ±μ μ κ±°ν©λλ€.
λμ λͺ¨λ κ΅¬μ± νμΌκ³Ό μ μ΄ μ’
μμ±(webpack, Babel, ESLint λ±)μ νλ‘μ νΈλ‘ 볡μ¬νμ¬ μμ ν μ μ΄ κΆνμ κ°μ§ μ μμ΅λλ€. eject
λ₯Ό μ μΈν λͺ¨λ λͺ
λ Ήμ μ¬μ ν μλνμ§λ§, 볡μ¬λ μ€ν¬λ¦½νΈλ₯Ό κ°λ¦¬ν€λ―λ‘ μ΄λ₯Ό μμ ν μ μμ΅λλ€. μ΄ μμ λΆν°λ μ€μ€λ‘ κ΄λ¦¬ν΄μΌ ν©λλ€.
eject
λ₯Ό μ¬μ©ν νμλ μμ΅λλ€. νλ μ΄ν
λ κΈ°λ₯ μΈνΈλ μκ·λͺ¨ λ° μ€κ·λͺ¨ λ°°ν¬μ μ ν©νλ©°, μ΄ κΈ°λ₯μ μ¬μ©ν΄μΌ νλ€λ μλ°κ°μ λλΌμ§ μμλ λ©λλ€. κ·Έλ¬λ μ€λΉκ° λμμ λ μ¬μ©μ μ§μ ν μ μλ€λ©΄ μ΄ λκ΅¬κ° μ μ©νμ§ μλ€λ μ μ μ΄ν΄ν©λλ€.
- νμΌ μ΄λ¦: μΌλ°₯ μΌμ΄μ€(kebab-case)
- μ»΄ν¬λνΈ νμΌ μ΄λ¦: νμ€μΉΌ μΌμ΄μ€(PascalCase)
- ν¨μ λ° λ³μ μ΄λ¦: μΉ΄λ© μΌμ΄μ€(camelCase)
νμ μ€ν¬λ¦½νΈμ κ²½μ° μΈν°νμ΄μ€(interface)μ μ΄λ¦μ λͺ μ¬/λͺ μ¬μ νΉμ νμ©μ¬/νμ©μ¬μ λ‘ μ§λλ€.
ν΄λμ€ μ΄λ¦μ λͺ μ¬λ λͺ μ¬μ λ‘ μ§λλ€.
ν¨μλͺ μ κΈ°λ³Έμ μΌλ‘ λμ¬λ‘ μμνλ€. λ€λ₯Έ νμ μΌλ‘ μ ννλ ν¨μμμλ μ μΉμ¬λ₯Ό μ¬μ©ν μ μλ€.
μμ μ΄λ¦μ λλ¬Έμλ‘ μμ±νλ©°, 볡ν©μ΄λ μΈλμ€μ½μ΄ '_'λ₯Ό μ¬μ©νμ¬ λ¨μ΄λ₯Ό ꡬλΆνλ€.
μμκ° μλ λ³μμλ μλ¬Έμ μΉ΄λ©νκΈ°λ²(Lower camel case)μ μ¬μ©νλ€.
ν¨μ λ²μ μ΄μμ μλͺ μ£ΌκΈ°λ₯Ό κ°μ§λ λ³μμλ 1κΈμλ‘ λ μ΄λ¦μ μ°μ§ μλλ€. λ°λ³΅λ¬Έμ μΈλ±μ€λ νμ΄ν ν¨μμ νλΌλ―Έν° λ± μ§§μ λ²μμ μμ λ³μμλ κ΄λ‘μ μΌλ‘ 1κΈμ λ³μλͺ μ μ¬μ©ν μ μλ€.
// File: my-component.js
import React, { useState } from 'react';
const MyComponent = () => {
const [count, setCount] = useState(0);
const handleClick = () => {
setCount(count + 1);
};
return (
<div>
<p>Count: {count}</p>
<button onClick={handleClick}>Increment</button>
</div>
);
};
export default MyComponent;
- νμΌ μ΄λ¦: μ»΄ν¬λνΈ νμΌ μ΄λ¦μ
MyComponent.js
μ κ°μ΄ νμ€μΉΌ μΌμ΄μ€λ₯Ό μ¬μ©νκ³ , μΌλ° νμΌ μ΄λ¦μmy-component.js
μ κ°μ΄ μΌλ°₯ μΌμ΄μ€λ₯Ό μ¬μ©ν©λλ€. - ν¨μ λ° λ³μ μ΄λ¦:
handleClick
κ³Ό κ°μ΄ μΉ΄λ© μΌμ΄μ€λ₯Ό μ¬μ©ν©λλ€. - μμ μ΄λ¦: μμλ
API_URL
κ³Ό κ°μ΄ λλ¬Έμμ μΈλμ€μ½μ΄λ₯Ό μ¬μ©ν©λλ€. - μμ λ³μ: λ°λ³΅λ¬Έ μΈλ±μ€λ νμ΄ν ν¨μμ νλΌλ―Έν°λ‘ μ¬μ©λλ κ²½μ°μλ§
i
μ κ°μ 1κΈμ μ΄λ¦μ μ¬μ©ν©λλ€.
λͺ¨λ μμ μ λ¨μλ githubμ μμ±λ Issueλ₯Ό κΈ°μ€μΌλ‘ ν©λλ€.
Issueμ λ³Όλ₯¨μ μ΅μ νλμ κΈ°λ₯μΌλ‘ ν©λλ€.
νλμ μ΄μλ₯Ό λ§λ¬΄λ¦¬νκΈ° μ μλ νΉλ³ν μν©μ΄ μλ μ΄μ λ€λ₯Έ μμ μ λν μ΄μλ₯Ό μμ±νμ§ μμ΅λλ€.
Issue β€ PR
νλμ μ΄μμ λν΄μ λ°λμ νλμ PRμ΄ μ΄λ €μΌνλ 건 μλλλ€.
μνν μ½λ리뷰μ 리뷰μ λν λ΄μ©μ λ°μνκΈ° μν΄μ PRμ 3κ°μ commitμ λμ΄κ°μ§ μμμΌν©λλ€.
νλμ PRμ 3κ° μ΄μμ File Changeλ μ§μν©λλ€.
μ»€λ° κ΅¬λΆ | μ€λͺ |
---|---|
Feature | (Feature) κ°μ λλ κΈ°λ₯ μΆκ° |
Bug | (Bug Fix) λ²κ·Έ μμ |
Doc | (Documentation) λ¬Έμ μμ |
Test | (Test) ν μ€νΈ μΆκ°/μμ |
Build | (Build) λΉλ νλ‘μΈμ€ κ΄λ ¨ μμ (yml) |
Performance | (Performance) μλ κ°μ |
Refactor | (Cleanup) μ½λ μ 리/리ν©ν λ§ |
- μ΄μλ²νΈμ ν¨κ» μ»€λ° λ΄μ©μ μ λλ€.
- μμ : [#1] feataure : ~