Closed sungik-choi closed 2 years ago
Merging #729 (a764958) into next-v1 (99b3472) will increase coverage by
0.06%
. The diff coverage is100.00%
.
@@ Coverage Diff @@
## next-v1 #729 +/- ##
===========================================
+ Coverage 63.57% 63.63% +0.06%
===========================================
Files 170 172 +2
Lines 2638 2643 +5
Branches 734 734
===========================================
+ Hits 1677 1682 +5
Misses 843 843
Partials 118 118
Impacted Files | Coverage Δ | |
---|---|---|
src/components/Icon/BaseIcon.tsx | 100.00% <100.00%> (ø) |
|
src/components/Icon/createIcon.tsx | 100.00% <0.00%> (ø) |
|
src/components/Icon/legacy/LegacyIcon.tsx | 75.00% <0.00%> (ø) |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update 133e5b8...a764958. Read the comment docs.
icon
이 suffix가 아니라 prefix로 붙는 건 어떤가요?
인텔리센스에 이점이 있을 것 같아서요.
icon
이 suffix가 아니라 prefix로 붙는 건 어떤가요? 인텔리센스에 이점이 있을 것 같아서요.
저는 인텔리센스의 이점보다 더 일반적인 네이밍 방식이 더 좋다고 생각했어요.
icon asset이 추가될때마다 수동으로 -icon postfix를 붙혀주어야 하는걸까요?
지금 당장은 그렇고, 추후에 피그마에서 바로 가져온 후 suffix를 붙이는 방식으로 변경해야할 거 같아요
icon asset이 추가될때마다 수동으로 -icon postfix를 붙혀주어야 하는걸까요?
지금 당장은 그렇고, 추후에 피그마에서 바로 가져온 후 suffix를 붙이는 방식으로 변경해야할 거 같아요
스크립트로 해결할 수 있을까 싶어 물어봤는데 피그마 직접 연결하는거면 🆗
breaking change인데 바로 마이그레이션할 룸이 있을까요? Icon export name 변경 없이 deprecated로 처리하면 되지 않을까요?
기존 Icon
은 그대로 사용가능해요. LegacyIcon as Icon
으로 export됩니다. 새로 생긴 Icon
은 export되지 않고 createIcon
함수를 통해 개별 아이콘을 생성하는 데만 사용돼요. PR description에 AS-IS, TO-BE 모두 같은 버전입니다.
:tada: This PR is included in version 1.0.0-next-v1.99 :tada:
The release is available on:
Your semantic-release bot :package::rocket:
Summary
사용처에서 Tree-shaking이 가능한 Icon 컴포넌트를 구현합니다. 아이콘이 모두 변경되어, 변경사항이 많습니다. 커밋별로 확인해주세요!
Bundle Size Test
CRA에 빌드한 bezier-react 패키지를 설치한 상태에서 테스트했습니다.
Details
AS-IS
현재는 사용처에서
name
속성에 아이콘 이름을 넣으면Icon
컴포넌트 내부에서 generated된 아이콘 객체에서IconName
을 key로 아이콘을 찾아서 렌더하는 방식으로 구현되어 있습니다. 빌드 타임에 어떤 아이콘이 사용될지 알 수 없기 때문에,Icon
컴포넌트를 사용하면 사용하지 않는 모든 아이콘이 번들링된 파일에 포함됩니다.TO-BE
IconName
으로 아이콘을 "찾아서" 렌더하는 대신, 사용처에서 아이콘을 "직접" 가져와서 사용합니다. 어떤 아이콘을 사용할 지 빌드 타임에 알 수 있기 때문에, 번들링된 파일에 불필요한 아이콘이 포함되지 않습니다.아래와 같은 점들을 고려했습니다.
icon
suffix를 추가합니다. svgr cli를 통하면 svg 에셋명이 파스칼 케이스화 되어 컴포넌트명이 됩니다. 기존엔IconName
을 통해 generated된 icons 객체에서 찾아서 컴포넌트를 그렸기에 문제가 발생하지 않았지만, 개별 컴포넌트로 사용처에서 import해서 사용할 경우 문제가 발생합니다.icon
suffix가 없을 경우 명시적이지 않기도 하거니와, 무엇보다도 다른 컴포넌트와 이름이 겹치게 됩니다. (예를 들어,Typography
라는 아이콘이 있습니다)Icon
을 사용하는 사용처에선 문제가 발생하면 안되기 때문에, 기존에 사용하던IconName
은 변하지 않도록 했습니다.Svgr 라이브러리 업데이트
icon-template
)에만 변경사항이 있습니다.그 외
Icon
컴포넌트는LegacyIcon
으로 이름을 변경하고Icon/legacy
디렉터리 아래로 이동했습니다.Browser Compatibility
OS / Engine 호환성을 반드시 확인해주세요.
Windows
macOS
TODO
Icon
을 사용하는 컴포넌트들을 모두 변경References