styled-components πŸ’…μ—μ„œ style이 μ μš©μ•ˆλ  λ•Œ

babel의 plugin μ„€μ •μ—μ„œ emotion κ³Ό babel-plugin-styled-components μˆœμ„œλ₯Ό λ°”κΏ”λ³΄μž

FlyingSquirrel
3 min readSep 14, 2019

μΆ”μ„μ—°νœ΄μ— 개인 ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ©΄μ„œ μ΄λ²ˆμ—λŠ” css μ μš©ν•˜λŠ” κ±Έ styled-componentsλ₯Ό μ‚¬μš©ν•΄λ³΄λ €κ³  ν–ˆλŠ”λ°, μŠ€νƒ€μΌμ΄ 적용이 μ•ˆλ˜μ„œ ν•œμ°Έ ν—€λ§Έλ‹€. 거의 2μ‹œκ°„μ„ 이거 λ•Œλ¬Έμ— ν—ˆλΉ„ν•œ 것 κ°™λ‹€. λ‚˜κ°™μ€ 바보가 μ—†κΈΈ 바라며!

μ—λŸ¬λŠ” μ—†λŠ”λ°, μŠ€νƒ€μΌμ΄ 적용이 μ•ˆλ˜λŠ” ν˜„μƒ

styled-componentsλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ λ‚΄κ°€ μ„€μΉ˜ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 2κ°œμ˜€λ‹€.

  • styled-components
  • babel-plugin-styled-components
styled-components κ³΅μ‹λ¬Έμ„œμ—μ„œ babel plugin μ‚¬μš©μ„ ν•„μˆ˜λŠ” μ•„λ‹ˆμ§€λ§Œ κ°•λ ₯ν•˜κ²Œ μΆ”μ²œν•œλ‹€κ³  μ¨μžˆλ‹€.
// μ»΄ν¬λ„ŒνŠΈ ꡬ쑰<App>
<Component />
</App>
component.js

κΈ€μžμƒ‰μ„ λΉ¨κ°„μƒ‰μœΌλ‘œ ν•˜κ³  μ‹Άμ—ˆλ‹€. 그런데 μ•ˆλλ‹€.

buildν–ˆμ„ λ•Œ λ”±νžˆ μ—λŸ¬κ°€ λ‚˜λŠ” 것도 μ—†κ³ , localhostμ—μ„œ λ³΄μ•˜μ„ λ•Œ console.log 에도 별닀λ₯Έ μ—λŸ¬ λ‘œκ·Έκ°€ μ—†μ—ˆλ‹€. 그러면 color κ°€ red 둜 λ‚˜μ™€μ•Όν•  것 κ°™μ•˜λŠ”λ°..

κΏ‹κΏ‹ν•˜κ²Œ 검정색.. 😑

styled.div 둜 μ“΄κ²Œ 잘λͺ»λœκ±΄κ°€ μ‹Άμ–΄μ„œ styled.h1 으둜 λ°”κΏ”λ΄€λ”λ‹ˆ h1 tag둜 잘 λ‚˜μ™”λŠ”λ°, style만 적용이 μ•ˆλλ‹€. (μ™œμ§€μ™œμ§€μ™œμ§€μ™œμ§€β€¦πŸ˜‘πŸ˜‘)

const StyledDiv = styled.h1`
color: red;
`;
폰트만 컀지고 κΏ‹κΏ‹ν•˜κ²Œ 검정색.. 😑😑😑

λ¬Έμ œλŠ” babel plugin μ„€μ • μˆœμ„œμ˜€λ‹€

κ΅¬κΈ€λ§ν•΄μ„œ λ‚˜μ˜€λŠ” μ™ λ§Œν•œ 글을 λ‹€ 봀던 것 같은데 해결이 μ•ˆλ˜λ˜ 도쀑 stack over flowμ—μ„œ 이 글을 μ°Ύμ•˜λ‹€! πŸ™Œ
( πŸ‘‰ Setup for React styled components)

The order of plugins is important. Placing styled-components BEFORE emotion resolves the conflict.

emotion은 css 같은 μŠ€νƒ€μΌ νŒŒμΌμ„ μ΅œμ†Œν™”μ‹œν‚€κ³  μ΅œμ ν™”μ‹œν‚€κΈ° μœ„ν•œ babel plugin인데, μ„ μ–Έλœ 값듀을 parsingν•΄μ„œ μ΅œμ†Œν™”/μ΅œμ ν™”ν•˜λŠ”λ°(κ·Έ 과정을 μœ„ λ‹΅μ—μ„œλŠ” magic이라고 ν‘œν˜„ν•œ 것 κ°™λ‹€), emotion이 μž‘μ—…μ„ ν•˜κΈ° 전에 babel-plugin-styled-components ν”ŒλŸ¬κ·ΈμΈμ„ μ‹€ν–‰ν•˜κ³ , κ·Έ 뒀에 emotion이 μž‘μ—…ν•  수 μžˆλ„λ‘ ν•΄μ£Όμ–΄μ•Ό 좩돌이 λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” λœ»μ΄μ—ˆλ‹€.

κ·Έλž˜μ„œ μ•„λž˜μ™€ 같은 μƒνƒœμ˜€λ˜ babel.config.jsνŒŒμΌμ—μ„œ plugin μˆœμ„œλ₯Ό λ°”κΏ”μ£Όμ—ˆλ‹€.

λ³€κ²½ μ „ πŸ‘‡

λ³€κ²½ ν›„ πŸ‘‡

그러면 λ†€λžκ²Œλ„ λ‚΄κ°€ μ›ν•˜λŠ”λŒ€λ‘œ μŠ€νƒ€μΌμ΄ μ μš©λœλ‹€.

짝짝짝짝 πŸ‘πŸ‘πŸ‘πŸ‘πŸ‘πŸ‘

--

--

FlyingSquirrel
FlyingSquirrel

Written by FlyingSquirrel

감성이 λ§λž‘λ§λž‘ν•œ κ°œλ°œμžμž…λ‹ˆλ‹€.

No responses yet