230406(λͺ©)
π μ±μ₯μΌμ§ 4.0
μ±
ν볡ν μ΄κΈ°μ£Όμμ(μ¨μΈ λ€μ΄μ΄)
μ λ΄μ©μ μκ·Ήλ°μ μμνλ μλ°ν μ±μ₯κΈ°λ‘
μ΄μμλ κ½κ³Ό μ£½μ κ½μ μ΄λ»κ² ꡬλ³νλκ°?
μ±μ₯νκ³ μλ κ²μ΄ μ΄μ μλ κ²μ΄λ€.
μλͺ μ μ μΌν μ¦κ±°λ μ±μ₯μ΄λ€!
π³ (1.0)ν€μλ
μ΅λν κ°λ¨νκ² μ 리, μΆνμ 보면μ μ€μ€λ‘ μ€λͺ
π (2.0)κ²½ν μμ£Όλ‘
λ¨μ μ 보λ₯Ό μ λ¬νκΈ°λ³΄λ€ λ¬΄μμ λ°°μ κ³ μ΄λ»κ² ν΄κ²°νλμ§ μ§§κ³ κ°λ¨νκ² μμ±
βοΈ (3.0)μ ν΄μ§ ν νλ¦Ώμ λ§μΆ°μ
ν€μλ, κ²½ν λͺ¨λ μ’λ€. λ€λ§ λ§€μΌ μμ±νκΈ°λ‘ λ§μ λ¨Ήμλ§νΌ ν΅μ¬λ§ κ°κ²°νκ² μ 리ν μ μκ² ν νλ¦Ώμ μμ±
(3.1)230102λΆν° μμλλ νμ΅μ κ΄ν λ΄μ© μΆκ°
(3.2)230313λΆν° μ’λ κ²½ν, κ°μ μμ£Όμ λ΄μ©λ λ΄κΈ°!
πΎ (4.0)νμ΅ ν€μλμμ μ΅λν κ°λ¨ν μ 보 μ 곡, κ³ λ―Όμμ λ΄ κ²½νμ μμΈν μ μ!
π μ€λμ νμ΅ ν€μλ
κ³ λ―Ό μ¬ν
1. κ° μ»΄ν¬λνΈ λ³ μ€νμΌμ μ΄λ»κ² μ νκΉ?
κ°κ°μ MVC ν¨ν΄μ μ μ©ν μ»΄ν¬λνΈλ§λ€ λ 립μ μΈ μ€νμΌμ μ μ©νκ³ μΆμλ°β¦ λ³΄ν΅ reactμ ν¨κ» μ°λ styled-componentλ emotion κ°μ css in JSλ μ‘°μ¬ν΄λ³΄λ vanilla JSμ μ¬μ©μ κ°λ₯νμ§λ§ κ΅μ₯ν λΆνΈνλ€κ³ νλ€. ν΄μ μ§κΈ μκ° μ€μΈκ±΄ μμ£Ό μμ λλ§μ tailwindλ₯Ό λ§λ€μ΄λ³΄λ©΄ μ΄λ¨κΉ..?!(μμ§ μκ°μ μ¬λ¬ κ°λ¨ν ν΄λμ€λ€μ λ§λλ κ² λΏμ΄μ§λ§!!)
=> tailwind CSSλ₯Ό μ¬μ©ν΄λ³΄κΈ°λ‘ κ²°μ ! μ²μμ μμ cssλ‘ μ¬λ¬ classλ₯Ό λ§λ€μ΄μ λ§μΉ μμ tailwindμ²λΌ μ¬μ©ν΄λ³΄κΈ°λ‘ νμ§λ§, μ΄λ² νλ‘μ νΈμλ ν¬κ²/λ§μ΄ κ·κ²©νν styleλ€μ΄ λ§μ΄ μμ§ μμμ tailwindλ₯Ό μ¬μ©νλ©΄μ κ·Έ μμμ customν μ€νμΌ λͺκ°λ₯Ό λ§λ€μ΄μ μ μ©ν΄λ³΄κΈ°λ‘ κ²°μ νλ€.
2. tsconfig.json path μ€μ β¦!!!
"paths": {
"@src/*": ["src/*"],
"@components/*": ["src/components/*"],
"@styles/*": ["src/styles/*"],
"@utils/*": ["src/utils/*"],
},
μμ κ°μ΄ κ²½λ‘λ₯Ό μ€μ νμ§λ§, jsλ‘ μ»΄νμΌ μμλ @κ° κ·Έλλ‘ λ¨μμ μλ¬κ° λ°μνλ€..! μ΄κ² μ μ»΄νμΌ λ μμμ μλ°λμ§β¦!!!!
ν΄κ²°: typescriptμ βtscβ λͺ
λ Ήμ΄ λ§μΌλ‘λ μ»΄νμΌ μμ μ€μ ν΄λμ pathλ₯Ό λ°κΏμ£Όμ§ λͺ»νλ€. μ΄ λ νμν κ², tsc-aliasλΌλ λΌμ΄λΈλ¬λ¦¬!!! μΈμ€ν¨ ν, tsc && tsc-alias
λ₯Ό ν΄μ£Όλ©΄ μ§μ ν΄λ pathκΉμ§ μμμ μλκ²½λ‘λ‘ jsμ λ°μλλ€.
3. tsc, tsc-alias, tailwind λ³ν λͺ¨λ νλ²μ watchλ‘ ν μ μμκΉ???
μμ μ»΄νμΌ κ³Όμ μ λͺ¨λ μ μ₯ μ λ§λ€ λ°μλκ² watch modeλ₯Ό μΌλκ³ μΆμλ€. ν΄μ μλμ κ°μ΄ μ€ν¬λ¦½νΈλ₯Ό μ§°λ€.
"scripts": {
"watch": "tsc --watch && tsc-alias --watch ....."
},
νλ° watch λͺ¨λλ μμ κ°μ΄ νλ²μ μ€νμ΄ μλλ€! κ·Έλ¬λ€ λ°κ²¬ν κ² npm-run-all
μ΄λΌλ λΌμ΄λΈλ¬λ¦¬!
μ€μΉ ν μλμ κ°μ΄ scriptsλ₯Ό μ§λ©΄ ν΄κ²°λλ€.
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"watch:ts": "tsc --watch",
"watch:tw": "npx tailwindcss -i ./src/styles/global.css -o ./dist/styles/output.css --watch",
"watch:tsa": "tsc-alias --watch",
"watch": "npm-run-all -p watch:*"
},
κ·Έλ¦¬κ³ npm run watch
λ₯Ό μ€ννλ©΄ 3κ°μ§ λμμ watch λͺ¨λκ° μ μ©λμ΄ μ€νλλ€.
π μμ½ λ° ν루 κ°λ¨ νκ³
μ€λ ν루λ μ λ§ λ 빨리 κ°λ€. μΌλ¨ μνλλλ‘ μ»΄ν¬λνΈ λ³λ‘ μ€νμΌμ μ£Όλ λ°©λ²μ μ μ©νλ€. κ·Έλ¦¬κ³ μ΄λμ λ κΈ°λ³Έ μ»΄ν¬λνΈλ€μ λ§λ€μ΄μ νλ μμ±νλ€. λ€λ§ μ΄μ λ κ³ λ―Όμ
μ΄λ κ² κ°κ° ꡬνλ μ»΄ν¬λνΈλ€μ μ΄λ»κ² μ’λ κ°λ
μ±μκ³ λ³΄κΈ° μ’κ² νΈλ¦¬ κ΅¬μ‘°λ‘ λ§λ€μ΄μ£Όλλ, κ·Έλ¦¬κ³ λ§μΉ 리μ‘νΈμ propsλ₯Ό μ λ¬νμ¬ μμ μ»΄ν¬λνΈκ° λ λλ§λλ―μ΄ κ΅¬ννλλμ΄λ€.
μμ±ν΄μΌλ μ»΄ν¬λνΈλ€λ ν λκ°κ° μλκ³ , μλ²λ λ§λ€μ΄μΌνκ³ β¦(μ΄κ±΄ κ·Έλ₯ json-server
ν΄μΌνλβ¦ γ
κ·Έλλ express λ μ¨λ³΄κ³ μΆμλ°..!), μ¬μ§μ΄ λ°μ΄ν°λ ν¬λ‘€λ§ν΄μμΌνλ€.
μΌλ¨ μ§λ κ²λ¨ΉμΌλ©΄ μκ°ν κ² λ무 λ§μμ§λκΉ..! μΌλ¨ ν루ν루 μκ² μͺΌκ°μ μμ±ν΄λκ°λ³΄μ :)~! κ·Έλλ μ¬λ―Έμκ² ν볡νκ² κ³΅λΆνκ³ μμΌλκΉ!
μ€λμ μν μ
- κ° μ»΄ν¬λνΈ μ€νμΌ μ μ© λ°©λ²μ κ³ λ―Όνκ³ μ°Ύκ³ μ μ©ν μ (feat. tailwindCSS)
- κΈ°λ³Έ νμ΄ λλ μ»΄ν¬λνΈλ€μ ꡬν μλ£ν μ
- λ²λ€λ¬μμ΄ typescript, type-aliasλ‘ μ λκ²½λ‘ ν΄κ²°ν μ (μ§μ§ μμ΄ λ€ μμνλ€)
μ€λμ 보μν μ
- yarn λ²μ β¦ ν