230607(์)
๐ ์ฑ์ฅ์ผ์ง 4.0
์ฑ
ํ๋ณตํ ์ด๊ธฐ์ฃผ์์(์จ์ธ ๋ค์ด์ด)
์ ๋ด์ฉ์ ์๊ทน๋ฐ์ ์์ํ๋ ์๋ฐํ ์ฑ์ฅ๊ธฐ๋ก
์ด์์๋ ๊ฝ๊ณผ ์ฃฝ์ ๊ฝ์ ์ด๋ป๊ฒ ๊ตฌ๋ณํ๋๊ฐ?
์ฑ์ฅํ๊ณ ์๋ ๊ฒ์ด ์ด์ ์๋ ๊ฒ์ด๋ค.
์๋ช ์ ์ ์ผํ ์ฆ๊ฑฐ๋ ์ฑ์ฅ์ด๋ค!
๐ณ (1.0)ํค์๋
์ต๋ํ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌ, ์ถํ์ ๋ณด๋ฉด์ ์ค์ค๋ก ์ค๋ช
๐ (2.0)๊ฒฝํ ์์ฃผ๋ก
๋จ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ธฐ๋ณด๋ค ๋ฌด์์ ๋ฐฐ์ ๊ณ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์งง๊ณ ๊ฐ๋จํ๊ฒ ์์ฑ
โ๏ธ (3.0)์ ํด์ง ํ ํ๋ฆฟ์ ๋ง์ถฐ์
ํค์๋, ๊ฒฝํ ๋ชจ๋ ์ข๋ค. ๋ค๋ง ๋งค์ผ ์์ฑํ๊ธฐ๋ก ๋ง์ ๋จน์๋งํผ ํต์ฌ๋ง ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฆฌํ ์ ์๊ฒ ํ ํ๋ฆฟ์ ์์ฑ
(3.1)230102๋ถํฐ ์์๋๋ ํ์ต์ ๊ดํ ๋ด์ฉ ์ถ๊ฐ
(3.2)230313๋ถํฐ ์ข๋ ๊ฒฝํ, ๊ฐ์ ์์ฃผ์ ๋ด์ฉ๋ ๋ด๊ธฐ!
๐พ (4.0)ํ์ต ํค์๋์์ ์ต๋ํ ๊ฐ๋จํ ์ ๋ณด ์ ๊ณต, ๊ณ ๋ฏผ์์ ๋ด ๊ฒฝํ์ ์์ธํ ์ ์!
๐ ์ค๋์ ํ์ต ํค์๋
styled-components
์ด๋ฒ์ ์๋กญ๊ฒ ์์๋๋ ํ๋ก์ ํธ์์๋ ๋ํ์ ์ธ CSS in JS
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ styled components
๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค. ์ฌ์ค ๋ด๊ฐ ์ข์ํ๋ TailwindCSS์ ๋น๊ตํ์ ๋
์ฑ๋ฅ๋ฉด์์ ์ข์ง ์๋ค๊ณ ํ์ฌ ๊ฐ๋ฅํ๋ฉด ์ฌ์ฉํ์ง ์์ผ๋ ค ํ๋ค. JS ์ฝ๋ ๋ด์์ CSS์ ๊ด๋ จ๋ ๋ก์ง์ด ์์ผ๋ฏ๋ก ๊ฒฐ๊ตญ์ ์ด ์ฝ๋๋ฅผ CSS ํ์ผ๋ก ์ปดํ์ผํด์ผํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์ฑ๋ฅ์ ํ๊ฐ
๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ๋ฆฌ์กํธ์ ์ปดํฌ๋ํธ ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์ฐ๊ณ ํ์ตํ๋ ๋ฐ์๋ styled components
๊ฐ ๋์์ด ๋๋ค๊ณ ํ์ฌ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
styled-components ๊ณต์๋ฌธ์ - Motivation
์คํ์ผ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ๊ณต์๋ฌธ์์ ๋ค์ด๊ฐ ๊ฐ๋จํ๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ค๋ช ์ ์ฝ์ด๋ณด์๋ค.(๊ฐ์ธ์ ์ผ๋ก ๊ณต์๋ฌธ์์์ ์ ๊ณตํ๋ get started ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ์ค๋ช ๋ ์ข์ง๋ง ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์๋์ง ๋ณด์ฌ์ฃผ๋ ๋ด์ฉ๋ค์ด ์ ๋ง ์ข๋ค๊ณ ์๊ฐํ๋ค.)
Motivation
์คํ์ผ๋ ์ปดํฌ๋ํธ๋ ์ด๋ป๊ฒ ๋ฆฌ์กํธ์ ์ปดํฌ๋ํธ ์ฒด๊ณ๋ฅผ ์คํ์ผ๋งํ๊ธฐ ์ํ CSS๋ฅผ ๊ฐํํ ์ ์์๊น์ ๋ํ ์๋ฌธ์ ๋ํ ๊ฒฐ๊ณผ์ด๋ค. ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- Automatic critical CSS: ์คํ์ผ๋ ์ปดํฌ๋ํธ๋ ํ์ด์ง์์ ๋ ๋๋ง๋ ์ปดํฌ๋ํธ์ ์คํ์ผ๋ง ์ฃผ์ ํ์ฌ ์ต์ํ์ ์ฝ๋๋ง ์ฌ์ฉ์๊ฐ ๋ก๋ํ๊ฒ ํ๋ค. ์ฝ๋ ์คํ๋ฆฌํ ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ํ์๋ก ํ๋ ์ฝ๋์์ ์ต์ํํ ์ ์๋ค.
- No class name bugs: ์คํ์ผ๋ ์ปดํฌ๋ํธ๋ ์คํ์ผ์ ๋ํ ๊ณ ์ ํ ํด๋์ค ์ด๋ฆ์ ์์ฑํ๋ค. ๋ฐ๋ผ์ ํด๋์ค ์ด๋ฆ ์ค๋ณต, ์ค์ฒฉ ํน์ ์ฒ ์ ์ค๋ฅ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์๋ค.
- Easier deletion of CSS: ์ผ๋ฐ์ ์ธ ์ฝ๋๋ฒ ์ด์ค์์ ํด๋ ์ค์ด๋ฆ์ด ์ด๋์์ ์ฌ์ฉ๋์๋์ง ์๊ธฐ ์ด๋ ต๋ค. ํ์ง๋ง ์คํ์ผ๋ ์ปดํฌ๋ํธ๋ ๋ชจ๋ ์คํ์ผ๋ง์ด ํน์ ์ปดํฌ๋ํธ์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ๋ช ํํ๋ค.
ํน์ ์ปดํฌ๋ํธ๊ฐ ์ฌ์ฉ๋์ง ์๊ณ ์ญ์ ๋๋ฉด ํด๋น ์ปดํฌ๋ํธ์ ์คํ์ผ๋ ๋ชจ๋ ํจ๊ป ์ญ์ ๋๋ค.
- Simple dynamic styling: ์ปดํฌ๋ํธ์ ์์ฑ์ด๋ ์ํ์ ๋ฐ๋ผ ์คํ์ผ์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
- Painless maintanence: ๋น์ ์ ์ปดํฌ๋ํธ์ ์ํฅ์ ์ฃผ๋ ์คํ์ผ์ ์ฐพ๊ธฐ ์ํด ๋ค๋ฅธ ํ์ผ์ ์ฐพ์๋ค๋์ง ์์๋ ๋๋ค. ๋ฐ๋ผ์ ์ ์ง๋ณด์๊ฐ ๊ต์ฅํ ํธ๋ฆฌํ๋ค.
- Automatic vendor prefixing: ํ์ฌ ํ์ค์ ๋ง๊ฒ CSS๋ฅผ ์์ฑํ๊ณ ์คํ์ผ์ฆ ์ปดํฌ๋ํธ๊ฐ ๋๋จธ์ง ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ค.
Global Style
styled components
์์๋ createGlobalStyle
์ ํตํด ์ ์ญ ์คํ์ผ์ ์ค์ ํ ์ ์๋ค. createGlobalStyle
์ styled components
์์ ์ ๊ณตํ๋ ์ปดํฌ๋ํธ์ด๋ค.
์๋์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ณดํต GlobalStyles.style.ts์ ๊ฐ์ ํ์ผ์ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ค. ๋ํ createGlobalStyle์ ํตํด css์์ reset css ์ญํ ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ๋ ํ๋ค.
import { createGlobalStyle } from 'styled-components';
const GlobalStyles = createGlobalStyle`
body {
margin: 0;
padding: 0;
}
`;
export default GlobalStyles;
Github project์ workflow
ํจ๊ป ๊ณต๋ถํ๋ ์ค์ธ iOS์ ๋ ธ์์๊ฒ Github project์ workflow ์ค๋ช ์ ๋ฃ๊ฒ ๋์๋ค. workflow๋ฅผ ํตํด project์ ์นธ๋ฐ์ ์ข๋ ์๋ํํ์ฌ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
- ์ค๋ฅธ์ชฝ ์๋จ โฆ ์์ workflow๋ฅผ ์ธํ
ํ ์ ์๋ค.
- trigger โ when
- action โ then
- ex) when: ์ด์๊ฐ ์์ฑ๋์์ ๋, then: ์ด์๋ฅผ TODO์๋ค๊ฐ ์ฎ๊ฒจ๋ผ
Github action
- yml ํ์ผ๋ก ์คํฌ๋ฆฝํธ ์ง์ ๋ค์ํ ๋์์ ์ํํ ์ ์๋ค.
- ์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ ์ฉํด๋ณผ์ง ๊ณ ๋ฏผ์ ํด๋ด์ผ๊ฒ ์ง๋ง, ์ด๋ค issue์ ๋ํ ๋ธ๋์น๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๋ฑ์ ๋์์ ์ํํ ์ ์์ ๊ฒ ๊ฐ๋ค.
๐ ์์ฝ ๋ฐ ํ๋ฃจ ๊ฐ๋จ ํ๊ณ
์ง์ง ํจ๊ป ํ๋ ๋๋ฃ๋ค ๋๋ถ์ ๋ง์ ์๊ทน์ ๋ฐ๋ ๊ฒ ๊ฐ๋ค. ๋๋ณด๋ค ์ํ๋ ๋๋ฃ๋ฅผ ๋ณด๋ฉด ์๊ธฐ์์นจํด์ง๋ ๊ฒ์ด ์๋๋ผ ์ด๋ค ์ ์ ๋ฐฐ์ธ ์ ์์์ง ์ฐพ์๋ณด๊ฒ ๋๋ค..! ์์ผ๋ก๋ ๋ ์ข์ ๋๋ฃ๋ค๊ณผ ํจ๊ป ์ฑ์ฅํ๊ณ ์ถ๋ค.(๊ทธ์ ์ ๋ด๊ฐ ๋จผ์ ์ข์ ์ฌ๋์ด ๋์ด์ผ๊ฒ ์ง..?!)
์ค๋์ ์ํ ์
- ๋ฐฑ๋ก๊ทธ๋ฅผ ์์ฑํ ์
- ํ์ ํ๋ฉด์ ์งํํ ์
์ค๋์ ์์ฌ์ด ์
- ์๋ค.