Ant-design: Svg рдЖрдЗрдХрди рдмрдВрдбрд▓реНрдб рдЖрдХрд╛рд░ рдХреЛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмрдирд╛рддреЗ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рд╕рд┐рддре░ 2018  ┬╖  223рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ant-design/ant-design


Issuehunt badges

  • [] рдореИрдВрдиреЗ рдЗрд╕ рднрдВрдбрд╛рд░ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдЦреЛрдЬрд╛ рд╣реИ рдФрд░ рдпрд╣ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреЛрдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рд╣реИред

рд╕рдВрд╕реНрдХрд░рдг

3.9.0

рд╡рд╛рддрд╛рд╡рд░рдг

webpack4

рдкреНрд░рдЬрдирди рд▓рд┐рдВрдХ

https://zlab.github.io/report.html

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рд╡реЗрдмрдкреИрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рдХреНрдпрд╛ рдЙрдореНрдореАрдж рд╣реИ?

рдЖрдЗрдХрди цЙУхМЕ цЙУхМЕ, рдЬреЗрдПрд╕ цЙУхМЕ цЙУхМЕ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

цЙУхМЕ хИ░ рд╣рд┐рд╕реНрд╕рд╛-рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ щЗМхО╗ ф║Ж




рдЗрд╢реНрдпреВрд╣рдВрдЯ рд╕рд╛рд░рд╛рдВрд╢

vagusx

рдмреИрдХрд░реНрд╕ (рдХреБрд▓: $ 203.00)

  • issuehunt
  • rororofff
  • ssprettychill

рдкреНрд░рд╕реНрддреБрдд рдкреБрд▓ рдЕрдиреБрд░реЛрдз

- # 18217 рдЪреАрдВрдЯреА рдбрд┐рдЬрд╛рдЗрди рдЖрдЗрдХрди 4.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЯрд┐рдкреНрд╕

рдЗрд╢реНрдпреВрд╣рдВрдЯ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдпреЛрдЬрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рд╛рдпреЛрдЬрдХ рдмрдиреЗрдВ

Rewarded on Issuehunt Inactive IssueHuntFest тЭУFAQ ЁЯЧг Discussion

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

ЁЯТв рд╕рд┐рд░рджрд░реНрджред ред ред ред рдЪрд╛рдЪрд╛ рдХреЗред ред ред

рд╕рднреА 223 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрд╡рд╛рдж:


atd svg рдкреИрдХреЗрдЬ рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдпрд╣ рдорд╛рдВрдЧ рдкрд░ @ рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди / рдЖрдЗрдХрди рдкреИрдХреЗрдЬ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ

  • [] рдореИрдВрдиреЗ рдЗрд╕ рднрдВрдбрд╛рд░ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдЦреЛрдЬрд╛ рд╣реИ рдФрд░ рдпрд╣ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреЛрдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рд╣реИред

рд╕рдВрд╕реНрдХрд░рдг

3.9.0

рд╡рд╛рддрд╛рд╡рд░рдг

Webpack4

рдкреНрд░рдЬрдирди рд▓рд┐рдВрдХ

https://zlab.github.io/report.html

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рд╡реЗрдмрдкреИрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рдХреНрдпрд╛ рдЙрдореНрдореАрдж рд╣реИ?

рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЖрдЗрдХрди рдкреИрдХ, рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рднрд╛рдЬрди

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рдардЧ-рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдореЗрдВ рдкреИрдХ

рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдЖрдЗрдХрди рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рд╣реИрдВ

image

<Icon /> рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдЗрдХрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЖрдЗрдХрди рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓реЗ, рдЖрдЗрдХрди iconfont.cn рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдереЗ

рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдпреЛрдЬрдирд╛ рдХреА рдЧрд╣рди рдЪрд░реНрдЪрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, https://github.com/ant-design/ant-design/issues/12011#issuecomment -420038579 рджреЗрдЦреЗрдВ

cc @yesmeck

рдЖрдкрдХреЛ рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ antd рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

import Star from 'antd/icons/star';

<Star />

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦрди рдЕрд╕рдВрдЧрдд рд╣реИ

<Icon type="star" /> // should import star icon first

рдпрд╣ рдорд╛рдВрдЧ рдкрд░ рдкреИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рднреА рдЕрдЪреНрдЫреА рд╣реИ,

Iconfont рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд╣рд▓реЗ рдмрд╛рд╣рд░ рдЖ рдЬрд╛рдПрдЧреА, рдФрд░ рдЖрдЗрдХрди рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

<Icon.Star />

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦрди рдЕрд╕рдВрдЧрдд рд╣реИ

рдирд╣реАрдВ, рдЬрдм рддрдХ рдЖрдкрдХреЛ <Icon /> рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

рдХреБрдЫ рджреГрд╢реНрдпреЛрдВ рдХреЛ рдорд╛рдВрдЧ рдкрд░ рдкреИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдореЗрдиреВ рдХрд╛ рдЖрдЗрдХрди рд╕реЗрдЯ рдХрд░рдирд╛, рдЕрдЧрд░ рдЗрд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╕рд╛рдордиреЗ рд╡рд╛рд▓рд╛ рдпрд╣ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдЖрдЗрдХрди рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдмрд╕ @ рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди / рдЖрдЗрдХрди рдХреЛ рдПрдХ рдЪрдВрдХ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд┐рд▓реНрдЯ-рдЗрди рдШрдЯрдХ рдЬреЛ <Icon /> , рдЬреИрд╕реЗ <DatePicker /> , <Select /> рдЖрджрд┐, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдпрджрд┐ рдЗрд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╕рд╛рдордиреЗ рдХрд╛ рдЕрдВрдд рдпрд╣ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдХрди рдХреНрдпрд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИ

рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдмреИрдХ-рдПрдВрдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдореЗрдиреВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЗрдХрди рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдкреВрд░реНрдг рдкреИрдХреЗрдЬрд┐рдВрдЧ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмреЗрд╣рддрд░ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдорд╛рдВрдЧ рдкрд░ рдкреИрдХреЗрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ babel рдкреНрд▓рдЧрдЗрди рдХреА рддрд░рд╣ babel-plugin-import рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

analyzer

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд┐рд▓реНрдЯ-рдЗрди рдШрдЯрдХ рдЬреЛ <Icon /> , рдЬреИрд╕реЗ <DatePicker /> , <Select /> рдЖрджрд┐, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЖрдВрддрд░рд┐рдХ рд▓реЗрдЦрди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдкреНрд░рдХрд╛рд░ рдПрдХ рдЪрд░ рд╣реИ, рдХреНрдпрд╛ рдореИрдВ рдХреЗрд╡рд▓ рдкреВрд░реА рд░рд╛рд╢рд┐ рдХрд╛ рдкрд░рд┐рдЪрдп рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
<Icon type={icon} />
рдХреНрдпрд╛ рдЗрд╕реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдкреВрд░реНрдг рдкреИрдХреЗрдЬ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП svg рдХреЗ рдкреНрд░рддреАрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

https://github.com/jkphl/svg-sprite
https://css-tricks.com/svg-symbol-good-choice-icons/
https://css-tricks.com/pretty-good-svg-icon-system/

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рд╕реНрдЯ рдкреИрдХреЗрдЬ рд╕реАрдзреЗ @ant-design/icons рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рд╕реАрдзреЗ рд╣рд▓реНрдХреЗ рд╕рдВрдХрд▓рд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

+1, рдкреИрдХреЗрдЬ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛрдЧреБрдирд╛ рд╣реИ

ЁЯТв рд╕рд┐рд░рджрд░реНрджред ред ред ред рдЪрд╛рдЪрд╛ рдХреЗред ред ред

рд╕рдмрд╕реЗ рд╢рд░реНрдордирд╛рдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ SourceMappingUrl рдХреЛ рд▓рд╛рдирд╛ рд╣реИ

рдЗрд╕рдиреЗ рдореБрдЭреЗ 3.8.2 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛ рджрд┐рдпрд╛

https://github.com/HeskeyBaozi/reduce-antd-icons-bundle-demo (umi)

рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдореЗрдВ resolve.alias рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдирдП APIs рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝реНрдпреВрд░рдЪрд░ рдореЗрдВ рдЬрд╝рд░реВрд░рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ antd рдШрдЯрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рднреА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ loading , close-circle рдФрд░ рдЗрд╕реА рддрд░рд╣ред


https://github.com/HeskeyBaozi/reduce-antd-icons-bundle-demo (umi)
рдпрд╣рд╛рдВ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╣реИ: рд╡реЗрдмрдкреИрдХ рдХреЗ resolve.alias рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдореЗрдВ рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдбрд┐рдВрдЧ рдЖрдЗрдХрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЖрдЗрдХрди рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдСрди-рдбрд┐рдорд╛рдВрдб рдЖрдЗрдХрди рдореЗрдВ antd рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрдХрди рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ loading , close-circle рдФрд░ рдЗрддрдиреЗ рдкрд░ред

@HeskeyBaozi рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдордп 9:29 , рдФрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп 6 hours ago , рднрд╛рдЗрдпреЛрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ! рдЬреИрд╕реЗ: рдердореНрд╕рдЕрдк :: рдердореНрд╕рдЕрдк :: рдердореНрд╕рдЕрдк:

рдореЗрд░реА рд╕рдордЭ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ antd рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

@ChiaJune antd рдШрдЯрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди
https://github.com/HeskeyBaozi/reduce-antd-icons-bundle-demo/blob/master/src/icons.js#L10 -L100

рдЖрдк fontawsome рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдП

import { library } from "@fortawesome/fontawesome-svg-core";
import faCalendar from "@fortawesome/free-solid-svg-icons/faCalendar";

library.add(faCalendar); // Load icon once

...

import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
<FontAwesomeIcon icon="calendar" />

рдЦ

import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import faCalendar from "@fortawesome/free-solid-svg-icons/faCalendar";

<FontAwesomeIcon icon={faCalendar} /> // Import directly or any svg

рдкреБрд░рд╛рдиреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝реЗрдВред

import { Icon } from 'antd';
<Icon type="star" />

рдкреНрд░рджрд╛рддрд╛ рдирдпрд╛ API рдЬреИрд╕реЗ:

import Star from 'antd/icons/Star';
import Setting as SettingIcon from 'antd/icons/Setting';

<Star />
<SettingIcon />

рдФрд░ рдкреЗрдбрд╝ рд▓рдЧрд╛рдиреЗ рдпреЛрдЧреНрдп рддрд░реАрдХрд╛ рднреА:

import { Icon: { Star, Setting } } from 'antd';

<Star />
<SettingIcon />

@HeskeyBaozi @yesmeck

https://github.com/HeskeyBaozi/reduce-antd-icons-bundle-demo (umi)

рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдореЗрдВ resolve.alias рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдирдП APIs рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝реНрдпреВрд░рдЪрд░ рдореЗрдВ рдЬрд╝рд░реВрд░рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ antd рдШрдЯрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рднреА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ loading , close-circle рдФрд░ рдЗрд╕реА рддрд░рд╣ред

https://github.com/HeskeyBaozi/reduce-antd-icons-bundle-demo (umi)
рдпрд╣рд╛рдВ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╣реИ: рд╡реЗрдмрдкреИрдХ рдХреЗ resolve.alias рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдореЗрдВ рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдбрд┐рдВрдЧ рдЖрдЗрдХрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЖрдЗрдХрди рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдСрди-рдбрд┐рдорд╛рдВрдб рдЖрдЗрдХрди рдореЗрдВ antd рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрдХрди рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ loading , close-circle рдФрд░ рдЗрддрдиреЗ рдкрд░ред

@HeskeyBaozi рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди !! (рдЬрдм рддрдХ

рдЗрд╕ рдкрд░ рдирдЬрд╝рд░ рд░рдЦреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

cc @jameswhf @xcqwan

рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╡реИрд╕рд╛ рд╣реАред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╕рднреА рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЯреНрд░реАрд╢реЗрдХрд┐рдВрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдХреГрдкрдпрд╛ рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ

@serayuzgur
рдореИрдВ webpack.alias рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:)
image
рдореЗрд░реЗ рд░реЗрдкреЛ рдХреА antd- рдмреНрд░рд╛рдВрдЪ (рд╡реЗрдмрдкреИрдХ 4 + рдмреИрдмрд▓ 7.0)

рдпрд╣ рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдВрдбрд▓ рдореЗрдВ Button рд╣реИ (рд╢рд╛рдпрдж рдЬрдм рд╕реЗ рдпрд╣ рдорд╛рдЙрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ)ред рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрджрд┐ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдпрд╣ Button ?

image

(рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ - рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд┐рд░реНрдл Button рдШрдЯрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреАрдХ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмрдВрдбрд▓ рдХреЛ рдЙрдбрд╝рд╛рддреЗ рд╣реИрдВ)

рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (antd> = 3.9)

  1. рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = {
  //...
  resolve: {
    alias: {
      "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js")
    }
  }
};
  1. рдмрдирд╛рдПрдВ icons.js рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ src/ рдпрд╛ рдЬрд╣рд╛рдБ рднреА рдЖрдк рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ!
    рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рдПрдирдЯреАрдбреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП! рдореБрдЭреЗ рдХреЗрд╡рд▓ atd рдХреЗ рдЪреБрдирд┐рдВрджрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрди рдЖрдЗрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
export {
  default as DownOutline
} from "@ant-design/icons/lib/outline/DownOutline";

рдпрд╣ react-app-rewire (create-react-app рд╕рдВрд╢реЛрдзрдиреЛрдВ) рдХреЗ рд╕рд╛рде config-overwrites.js рд╕рд╛рде рднреА рд╕рдВрднрд╡ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмреЗрд╣рддрд░ рдПрдкреАрдЖрдИ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдХреБрдЫ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдЖрдЗрдХрди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрдЗрдХрди рдХреЛ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдмрдЯрди рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╕рд╛рде рд╣реА рдерд░реНрдб рдкрд╛рд░реНрдЯреА рдЖрдЗрдХреЙрди (рдпрд╛ рдХрд┐рд╕реА рднреА svg) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реЛрдЧрд╛ред

<Button icon={<Icon type="search" />}>Search</Button>

рдмрд╕ рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╕рдВрдж :)

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдРрдк-рдкреБрдирдГ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред

config-overrides.js

const path = require('path');

/* config-overrides.js */
module.exports = function override (config, env) {
  let alias = (config.resolve.alias || {});
  alias['@ant-design/icons/lib/dist$'] = path.resolve(__dirname, "./src/icons.js");

  config.resolve.alias = alias;

  return config;
}

icons.js рдЧрд┐рд╕реНрдЯ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдРрдк-рдкреБрдирдГ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред

config-overrides.js

const path = require('path');

/* config-overrides.js */
module.exports = function override (config, env) {
  let alias = (config.resolve.alias || {});
  alias['@ant-design/icons/lib/dist$'] = path.resolve(__dirname, "./src/icons.js");

  config.resolve.alias = alias;

  return config;
}

icons.js рдЧрд┐рд╕реНрдЯ

рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХрд░рдиреЗ рд╕реЗ TwoToneColor рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред
<Icon type="check-circle" theme="twoTone" twoToneColor="#52c41a" />
<Icon type="close-circle" theme="twoTone" twoToneColor="#f73131" />
рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
image

рдирдорд╕реНрддреЗ,
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг <Icon type="check-circle" рдЬреИрд╕реЗ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕ рдПрдкрд┐ рдХреЛ рд╣рд░ рдЖрдЗрдХреЙрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдЯрд╛рдЗрдк рдХрд░реЗ рдЙрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХреЗред

рдпрд╣ рд╣рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдЗрдХрди рддрдп рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рджреЗрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╡рд╛рди рд╣реИред рддреЛ рдореЗрд░реЗ рдЕрдиреБрд╕рд╛рд░ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдорд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдЖрдЗрдХрди рдШрдЯрдХ рдХреЛ рдорд╛рдВрдЧ рдкрд░ рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рдЖрдЗрдХрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╢рд╛рдпрдж рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (# 12235 рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ - рд╡реЗрдмрдкреИрдХ 4 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛) рдпрд╛ рд╡реЗрдмрдкреИрдХ 3 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреИрд╕реЗ рд░рд┐рдПрдХреНрд╢рди-рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп

рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЧреЗ рдЯреЗрдореНрдкреЛрд░рд░реА рд╕рдорд╛рдзрд╛рди рдЬрд╛рдирд╛:

$ yarn add purched-antd-icons
// webpack.config.js
module.exports = {
  // other configs
  resolve:{
    // other configs
    alias:{
      "@ant-design/icons":"purched-antd-icons"
    }
  }
}

atd-antd-icons рдкреИрдХреЗрдЬ рдЙрди рд╕рднреА рдЖрдЗрдХрдиреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ antd рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░реА рд╣рд╛рд▓рдд рдХреЗ рд▓рд┐рдП, Icomoon рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдЗрдХрди рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдПрдХ рдЗрдЬреЗрдХреНрдЯреЗрдб рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдмрдВрдбрд▓ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рд╣реИред

рд╡реЗрдмрдкреИрдХ рдЖрдЙрдЯрдкреБрдЯ
output

рдмрдВрдбрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
comparing

рдЖрдк рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдкрд╣рд▓реЗ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП dll рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ:

image

рдЙрдкрд░рд╛рдВрдд:

image

@tobiaslins рд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдХрд╣рддрд╛ рд╣реИ Module not found: Error: Can't resolve '@ant-design/icons/lib/dist' in '/Users/fede/Projects/despe/deliveries/node_modules/antd/es/icon' рдХреЛрдИ рднреА рдореБрдЭреЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдзрдиреНрдпрд╡рд╛рдж

@marcosfede рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдЙрд░реНрдл рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪреЗрдХ __dirname рдореЗрдВ рд╕реЗрдЯ path.resolve(__dirname, "./src/icons.js")

рдпрджрд┐ рдЖрдк рд░рд┐рдПрдХреНрд╢рди-рдРрдк-рд░реАрд╡рд╛рдЗрд░реНрдб рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

3.9 рдЙрдиреНрдирдпрди рдиреЗ рд╣рдорд╛рд░реЗ рдмрдВрдбрд▓ рдХреЛ 700kb (23%) рдмрдврд╝рд╛рдпрд╛ред рдЬрдм рднреА рд╣рдо рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдПрдХ рдмрдбрд╝рд╛ рдЖрд╢реНрдЪрд░реНрдп рдерд╛ред 'рдЖрдЗрдХреЙрдирдлреЙрдиреНрдЯ' рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╡реГрджреНрдзрд┐ рдСрдлрд╕реЗрдЯ рд╣реИред рд╣рдо @ рдУрдмреЛрдореИрди рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рд╕рдордЧреНрд░ рдкрджрдЪрд┐рд╣реНрди рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЛ рджреЗрдЦреЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ 3.8.4 рдкрд░ рд╣рдореЗрдВ рдлреНрд░реАрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

purched-antd-icons рдкреИрдХреЗрдЬ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрдИ рд▓рд╛рдкрддрд╛ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

@michaelpeterlee purched-antd-icons рдХреЗрд╡рд▓ рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдШрдЯрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрдиреНрдп рдЖрдЗрдХреЙрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдорд╛рдЙрд╕ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдпрд╛ рдЬреИрд╕реЗ рдлреЙрдиреНрдЯ рдЖрдЗрдХрди рдЬрдирд░реЗрдЯрд░ рдЪреБрдиреЗрдВ icomoon рдпрд╛ iconfont рдЕрдкрдиреЗ рдЖрдЗрдХрди рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВред

@marcosfede рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдЙрд░реНрдл рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪреЗрдХ __dirname рдореЗрдВ рд╕реЗрдЯ path.resolve(__dirname, "./src/icons.js")

рдпрджрд┐ рдЖрдк рд░рд┐рдПрдХреНрд╢рди-рдРрдк-рд░реАрд╡рд╛рдЗрд░реНрдб рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдпрд╣ рдЙрдкрдпреЛрдЧреА рдерд╛, рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ __dirname рдХреЙрдиреНрдлрд┐рдЧ рдлреЛрд▓реНрдбрд░ рдерд╛, рдЬрд╣рд╛рдБ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмрдЬрд╛рдп рд╡реЗрдмрдкреИрдХ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ AntDesign рдЯреАрдо рдХреЛ рдкрд┐рдЫрд▓реЗ рддрд░реАрдХреЗ (3.9 рд╕реЗ рдкрд╣рд▓реЗ) рдкрд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ, рдмреБрджреНрдзрд┐рдорд╛рди рддрд░реАрдХрд╛ рд╣реИред

рдпрд╣ рдмрд╛рд╣рд░реА рд░реВрдк рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред https://github.com/ant-design/ant-design-icons/issues/14

@marcosfede рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдЙрд░реНрдл рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪреЗрдХ __dirname рдореЗрдВ рд╕реЗрдЯ path.resolve(__dirname, "./src/icons.js")
рдпрджрд┐ рдЖрдк рд░рд┐рдПрдХреНрд╢рди-рдРрдк-рд░реАрд╡рд╛рдЗрд░реНрдб рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдпрд╣ рдЙрдкрдпреЛрдЧреА рдерд╛, рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ __dirname рдХреЙрдиреНрдлрд┐рдЧ рдлреЛрд▓реНрдбрд░ рдерд╛, рдЬрд╣рд╛рдБ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмрдЬрд╛рдп рд╡реЗрдмрдкреИрдХ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж!

рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗред

рд╣рд░ рдПрдХ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрдВрдкреЛрдиреЗрдВрдЯ рдмрдирд╛рдПрдВ

import StarFilled from 'antd/icons/StarFilled';

<StarFilled />

рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЖрдЗрдХрди рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ

рдЬрдм рдЖрдк рдирд┐рдореНрди рдШрдЯрдХреЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЖрдЗрдХрди рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдЪрд┐рддреНрд░рд┐рдд рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

<Icon type="star" />
<Alert iconType="success" />
<Avatar icon="star" /> 
<Button icon="star" /> 
Modal.confirm({ iconType: 'star' })

рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЖрдЗрдХрди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдорд╛рдВрдЧ рдкрд░ рдПрдХ рдПрд╕рд╡реАрдЬреА рд╕реНрдкреНрд░рд╛рдЗрдЯ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗред

рдПрдХ рдЖрдЗрдХрди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдЗрди рдкреНрд░реЙрдкрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ ReactNode рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

import StarFilled from 'antd/icons/StarFilled';

<Avatar icon={<StarFilled />} /> 

@yesmeck рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡реГрдХреНрд╖ рдХреЗ рд╢реЗрдХ рдФрд░ addIcon рдкрджреНрдзрддрд┐ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ!

рдПрдХ рдкреНрд░рд╢реНрдиред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрди рдЖрдЗрдХрдиреЛрдВ рдкрд░ рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рд╣реИрдВ рдФрд░ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдорд╛рдЙрд╕ рдХреЗ рд╕рднреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?

@michaelpeterlee rc-calendar antd рдФрд░ @ant-design/icons рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ "рдкреВрд░реЗ рдЖрдЗрдХрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓реЛрдб рдХрд░рдирд╛" рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдПрдХ рдкреБрди: рдкреЗрд╢ рдбреЗрдореЛ рдХреЗ рд╕рд╛рде https://github.com/react-component/calendar/issues рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реА рдЧрд▓рддреАред рдореИрдВрдиреЗ рдЕрдкрдиреА рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рд╣рдЯрд╛ рджреА рд╣реИред рдпрд╣ рдЖрдЗрдХрди рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдиреЗ рд╡рд╛рд▓рд╛ DatePicker рдШрдЯрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
image

рдореЗрд░реА рдмрд╛рдд рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ antd рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд╣реАрдВ рднреА рдкреНрд░рддреАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ antd рдШрдЯрдХреЛрдВ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ Icon рд╕реЗ antd ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡реЗ рдШрдЯрдХ рдкреВрд░реЗ рдЖрдЗрдХрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдЙрди рдЖрдЗрдХрди рдХреЛ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗред

@yesmeck

рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм 3.11.x ? рдпрд╣ 3.10.4 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

@ рдЬреЛрд╣реЛрд░рдиреЛрдЯ # 12888

V3.8.4 рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдкреИрдХ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж 3.9.0+ рд╕рдВрд╕реНрдХрд░рдг рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗрд╡рд▓ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╣реИред рдореИрдВ рдЖрдЗрдХрди рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рдж @yesmeck , рдореИрдВ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ create-react-app v2 рдФрд░ craco рд▓рд┐рдП рдПрдХ Ant Design plugin рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдБ GitHub рдкрд░ craco-atd рдкреНрд▓рдЧрдЗрди рд╣реИ

рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдПрдВрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдЖрдЗрдХреЙрди рд╕реЗрдХреНрд╢рди рд╕реЗ рдЖрд░рдИрдПрдбреАрдПрдордИ рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ рдмрдВрдбрд▓ рд╕рд╛рдЗрдЬрд╝ рдХреЛ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ (рдФрд░ рдкреАрдЖрд░ ) рдкрд░ рдирдЬрд╝рд░ рд░рдЦреВрдВрдЧрд╛ ред рдЯрд┐рдк


module.exports = {
  resolve: {
    alias: {
      "@ant-design/icons-angular/icons": "/path/to/node_modules/@ant-design/icons-angular/esm2015/icons/ant-design-icons-angular-icons.js"
    }
  }
}

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдЬрдирди рднрдВрдбрд╛рд░ рдХрд╛ рдорд╕реМрджрд╛ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВред рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдореВрд▓ рдПрдирдЬреА-рдЬрд╝реЛрд░реЛ-рдПрдирдЯреАрдбреА рдПрдХреАрдХрд░рдг рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдпрд╣рд╛рдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ DllPlugin рдлреБрд▓рд╛рдирд╛ ES рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреЗрдбрд╝-рдорд┐рд▓рд╛рддреЗ рд╣реБрдП рдмреЗрдХрд╛рд░ рд╣реИред

рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ DllPlugin рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИред

рдпрд╣рд╛рдВ рдХреБрдЫ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рд╕рдкрд╛рдЯ рдПрд╕ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬреЛ рдХреБрдЫ рд╡реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ DllPlugin рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╣рд╛рд▓ рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдордИ рддрдХ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ DllPlugin рдкрд░ рд╣рд┐рд▓рддреЗ рд╣реБрдП рдкреЗрдбрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ , рдореИрдВрдиреЗ entryOnly: true рдХрдорд╛рдП рд╣реИрдВ рд▓реЗрдХрд┐рди рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВред рдореИрдВ рдПрдХ рдЕрдзрд┐рдХ рдкреГрдердХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдорд╕реМрджрд╛ рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдЙрдард╛рдКрдВрдЧрд╛ред

рд╕рдВрдкрд╛рджрди: рдкреНрд░рдЬрдирди рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдФрд░ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдореБрджреНрджреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред

рдХрд╣рд╛рдиреА рдХрд╛ рдЕрдВрдд: рдпрд╣ рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдкреНрд░рдЬрдирди рдкреНрд░рдЬрдирди рдХреЗ рдорд┐рдереНрдпрд╛ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рд╡реЗрдмрдкреИрдХ 3.5.6 entryOnly: true рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рдмрд╣реБрдд рдкреБрд░рд╛рдирд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ fesm5 рдореЙрдбреНрдпреВрд▓ рд╡реГрдХреНрд╖-рд╣рд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ dll рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЛ ng-zorro-antd рдмрдВрдбрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

  • рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реЗрдмрдкреИрдХ> = 4.9.0 рд╣реИ , рддреЛ entryOnly: true рдХреЛ рдЕрдкрдиреЗ DllPlugin рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
  • рдЕрдиреНрдпрдерд╛, рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
module.exports = {
  resolve: {
    alias: {
      "@ant-design/icons-angular/icons": "/path/to/node_modules/@ant-design/icons-angular/esm2015/icons/ant-design-icons-angular-icons.js"
    }
  }
}

@issuehuntfest рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ $ 200.00 рдХрд╛ рд╡рд┐рддреНрдд рдкреЛрд╖рдг рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕реЗ рдЬрд╛рд░реА рдХрд░реЗрдВ рдореБрджреНрджреЗ рдкрд░ рджреЗрдЦреЗрдВ

рдХреНрдпрд╛ рдлрд╝реЙрдиреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ?рдмрд╣реБрдд рдмрдбрд╝рд╛

рдХреНрдпрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдпреЛрдЬрдирд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ? рдХреНрдпрд╛ рдЖрдк 3.8 рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рди рдПрдХ рд╕реНрдерд╛рдиреАрдп svg рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВ

рдХреНрдпрд╛ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ?

@fuhaiwei рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рддрдХ, рд╕реАрдзреЗ рдЖрдЗрдХрди https://github.com/ant-design/ant-design/issues/12011#issuecomment -423173228 рдкрд░ рдЖрдЗрдХрди рдирд┐рд░реНрдпрд╛рдд рдХрд░рдХреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ webpack.resolve.alias рдЙрдкрдпреЛрдЧ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреЗ рд╕рд╛рде antd/es/icon webpack.resolve.alias рдмрджрд▓рдиреЗ рдХреЗ
рдЕрд╕реЗрдВрдмрд▓реА <Icon /> props.type рдФрд░ props.theme рдирд┐рд░реНрджрд┐рд╖реНрдЯ API рдкрд░ рднреЗрдЬреА рдЬрд╛рдПрдЧреАред
рдЗрд╕ рддрд░рд╣, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рдЖрдЗрдХрди рдбреЗрдЯрд╛ рдкреГрд╖реНрда рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд┐рд░ рдбреЗрдЯрд╛ рдФрд░ https://github.com/ant-design/ant-design/issues/12011#issuecomment-423173228 рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ icons.js рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред
рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред


рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ webpack.resolve.alias рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреЗ рд╕рд╛рде antd/es/icon рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╡рд╣ рдШрдЯрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рдореЗрдВ props.type рдФрд░ props.theme <Icon /> рднреЗрдЬ рджреЗрдЧрд╛ред
рдпрд╣ рдЖрдкрдХреЛ рдкреГрд╖реНрда рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЖрдЗрдХрди рдбреЗрдЯрд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдлрд┐рд░ рдбреЗрдЯрд╛ рдФрд░ https://github.com/ant-design/ant-design/issues/12011#issuecomment-423173228 рдХреЗ рдЖрдзрд╛рд░ рдкрд░ icons.js рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ ред
рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

3 рдорд╣реАрдиреЗ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░реА рдХреЛ рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ рд╣реИ?

image

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рдЪрдп рд╡рд┐рдзрд┐ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛, рд╕рд╛рдордЧреНрд░реА рдХреА рддрд░рд╣, рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ред рдЕрдм рдХреЗрд╡рд▓ рд╡реЗ рдШрдЯрдХ рдЬреЛ рдмрд┐рд▓реНрдЯ-рдЗрди рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рдЪрд┐рд╣реНрди рдкреИрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВред ред

рдпрджрд┐ Icon рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ @ рдПрдВрдЯреА-рдбреЗрд╕рд┐рдЧрд┐рди / рдЖрдЗрдХрди рдкреИрдХреЗрдЬ рднреА рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдпрджрд┐ Icon рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ @ рдПрдВрдЯреА-рдбреЗрд╕рд┐рдЧрд┐рди / рдЖрдЗрдХрди рдкреИрдХреЗрдЬ рднреА рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

Datepicker рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдб рдореЗрдВ рдРрд╕рд╛ рд╣реИред рдореЗрдиреВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

500 рд╕реЗ рдЕрдзрд┐рдХ рдХреЗрдмреА рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ

рдЖрдИрдПрдирдЬреА рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред рдЬрдм рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдкреИрдХреЗрдЬ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдиреЗ рд╕реЗ рдбрд░ рд░рд╣рд╛ рдерд╛

рдореИрдВ рдПрд╕рд╡реАрдЬреА рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? Svg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпрд╛ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдЖрдЗрдХрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ atd рдХреЗ рд╕рднреА рдЖрдВрддрд░рд┐рдХ рдШрдЯрдХреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

import Search from 'antd/icons/Search";

<Search />

рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП, import { Icon } from 'antd'; рдЕрднреА рднреА рдЖрд░рдХреНрд╖рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ import { Icon } from 'antd'; рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдорд╛рдЙрд╕ рдХреА рдкреВрд░реА рд░рд╛рд╢рд┐ рдЖрдпрд╛рдд рдХреА рдЬрд╛рдПрдЧреАред

рдКрдкрд░ рд╕реЗ рд╕рд╣рдордд рд╣реВрдБ

рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ

500k рдЖрдЗрдХрди, рдХреНрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? 500kb рдореЗрд░реЗ рдмрдВрдбрд▓ рдХрд╛ рдПрдХ рдЪреМрдерд╛рдИ рд╣реИред рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЬреИрд╕реЗ рдЖрдЗрдХреЙрди рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

import Icon from 'antd/lib/icon';
<Icon type="logout" />

рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдЗрдХрди рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдПрдХ рд╕рд╛рде рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ 500kb рд░рд╣рддрд╛ рд╣реИред рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдкрд╛рд░реНрд╕рд▓ рдХреА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ-рдЧреБрдВрдЬрд╛рдЗрд╢ рдЙрддреНрдерд╛рдкрди рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЗрдХрди рдХреЛ рдареАрдХ рд╕реЗ рд╣рд┐рд▓рд╛ рдкрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ 20 рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдореЗрд░реЗ рдРрдк рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред

рд▓реЛрдЧ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣рд╛рдВ рд╣рд░ рдХреЛрдИ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд 500kb рдХреЗ рд╕рд╛рде рд╢рд┐рдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдЙрдирдХрд╛ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ?

рдХреНрдпрд╛ рдорд╛рдирдХ рд╡реЗрдмрдкреИрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ?

import Star from 'antd/icons/star';
рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдВрдЧрд╛ред

@ApolloGun рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдХрдИ рдмрд╛рд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╣реИ: https://github.com/ant-design/ant-design/issues/12011#issuecomment -423173228

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╡реЗрдмрдкреИрдХ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд╛рди рд╕реЗ рдЖрдЗрдХрди рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдЬрд╣рд╛рдВ рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рдЙрди рдЖрдЗрдХрди рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдЖрдЗрдХрди рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдШрдЯрдХреЛрдВ рдореЗрдВ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЙрд╕ рд╡рд┐рд╢рд╛рд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, atd рдореЗрдВ рдШрдЯрдХ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред рдореИрдВ рдЙрди рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдкрддрд╛ рдХреИрд╕реЗ рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдЬреЛ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЪреБрдирд┐рдВрджрд╛, рдбреНрд░реЙрдкрдбрд╛рдЙрди, рдЖрджрд┐ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЖрдЗрдХреЙрди рджреНрд╡рд╛рд░рд╛ Antd рдЖрдЗрдХрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЙрд╕ рд╡рд┐рд╢рд╛рд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, atd рдореЗрдВ рдШрдЯрдХ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред рдореИрдВ рдЙрди рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдкрддрд╛ рдХреИрд╕реЗ рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдЬреЛ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЪреБрдирд┐рдВрджрд╛, рдбреНрд░реЙрдкрдбрд╛рдЙрди, рдЖрджрд┐ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЖрдЗрдХреЙрди рджреНрд╡рд╛рд░рд╛ Antd рдЖрдЗрдХрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

@HeskeyBaozi рдиреЗ antd рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрдХрди рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдИ рд╣реИ, рдЬреЛ
https://github.com/HeskeyBaozi/reduce-antd-icons-bundle-demo/blob/master/src/icons.js#L10 -L100
рдХреГрдкрдпрд╛ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛ рдЪрд░реНрдЪрд╛ рдкрдврд╝реЗрдВред

@ApolloGun рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
рдкреБрд▓ рдЕрдиреБрд░реЛрдз: # 12888 рдЕрднреА рднреА рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИред

@yesmeck , @ afc163 рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдмрдВрдж рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?

@HeskeyBaozi @ afc163 , рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдЗрд╕ рдирдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? ?

@HeskeyBaozi рдореИрдВ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдкрд╛рдВрдЪ рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдП рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рдЗрд╕реЗ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдорд╛рдирддреЗ рд╣реИрдВ?

@HeskeyBaozi рдореИрдВ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдкрд╛рдВрдЪ рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдП рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рдЗрд╕реЗ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдорд╛рдирддреЗ рд╣реИрдВ?

рд╕рд╣рдордд, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ = (

antd рдХреЗ рдХреЛрдб рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ Button рдЖрдпрд╛рдд Icon рд░реВрдк рдореЗрдВ рдПрдХ рдШрдЯрдХ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ (рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░)

// import everything here
import * as allIcons from '@ant-design/icons/lib/dist';

//...

// use everything here :(
ReactIcon.add.apply(
  ReactIcon,
  _toConsumableArray(
    Object.keys(allIcons).map(function(key) {
      return allIcons[key];
    })
  )
);

рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЯреНрд░реАрд╢реЗрдХрд┐рдВрдЧ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рднреА рдЖрдЗрдХрди рдЖрдпрд╛рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдЖрдпрд╛рдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @ant-design/icons/lib/index.es.js рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░реЗрдВ рдФрд░ рдЬрд╝рд░реВрд░рдд рдкрдбрд╝рдиреЗ рддрдХ рд╕рднреА рдЖрдЗрдХрди рдкрд░ рдкрд░рд┐рдЪрд╛рд▓рди рди рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рджреЗрдЦреЗрдВ :

рдпрд╣ рд╕реАрдзреЗ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

@ рдЧрд░реАрдм ,

<Icon /> рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдЗрдХрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЖрдЗрдХрди рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓реЗ, рдЖрдЗрдХрди iconfont.cn рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдереЗ

рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд┐рдо рдпреЛрдЬрдирд╛ рдХреА рдЧрд╣рди рдЪрд░реНрдЪрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, # 12011 рджреЗрдЦреЗрдВ

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЕрднреА рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рд╣реИрдВ, рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рд╡рд╛рд▓рд╛ рд╣реИ

рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рд╣реИрдВ ...

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдХрдИ рдЖрдЗрдХрди рд╕рдВрджрд░реНрдн atd рдХреЗ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдЫреЛрдЯреА рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрджрд░реНрдн рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрд┐рдирддреА рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

@ рд╣реЗрдВрдпреЙрдиреНрдЧ рдЙрд╣ , рд╡рд╣ рдЕрдВрдбрд╛ рджрд░реНрдж рдХрд░рддрд╛ рд╣реИред ред ред

@aryzing рдЖрдкрдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдХрд░реНрд╖рдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо # 12888 рд╕реЗ рдХрдо рд╣реЛрдЧрд╛? рдкреАрдЖрд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рдХрд╛рд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╣реАрдиреЛрдВ рдХреЗ рдмрд╛рдж рднреА рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред

@zachguo рдореИрдВрдиреЗ # 12888 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦрд╛, рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрд╛ рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЖрдЗрдХрдиреЛрдВ рдХреЛ рд╣рд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдЗрдХрдиреЛрдВ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдбрд╛рдпрдирд╛рдорд┐рдХ рдПрдкреНрд╕ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╣рд┐рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдИрдПрд╕ рдЖрдпрд╛рддреЛрдВ рдХреА рд╕реНрдерд┐рд░ рдкреНрд░рдХреГрддрд┐ рд╕реЗ рдЯрдХрд░рд╛ рд░рд╣реЗ рд╣реИрдВред

рдХреБрдЫ рдПрдиреЙрдЯ рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрдХрди рдХреЛ рдПрдХ рдкреНрд░реЛрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛рдиреА рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдХреЗ рдПрдкреА рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

<Button icon="search">Search</Button>

рдЗрд╕ рдШрдЯрдХ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдШрдЯрдХ (рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрдЗрдХрди рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рд╕рднреА рдЖрдЗрдХрди рдкрд░ (рд░рди-рдЯрд╛рдЗрдо рдкрд░) рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдкреЗрдбрд╝ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред

рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐

import { 
  SearchIcon // not sure if this actually exists
} from '@antd/some-icons-package';

<Button icon={SearchIcon}>Search</Button> {/* option 1 - component */}
<Button icon={() => <SearchIcon />}>Search</Button> {/*option 2 - render prop */}

рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рдЙрд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╡реГрдХреНрд╖ рд╣рд┐рд▓рд╛рдирд╛ рд╕рднреА рдЕрдкреНрд░рдпреБрдХреНрдд рдирд┐рд░реНрдпрд╛рддреЛрдВ рдХреЛ рдЙрджрд╛рд╣рд░рдг @antd/some-icons-package рд╕реЗ рдХрд┐рдХ рдФрд░ рдбреНрд░реЙрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ, рдФрд░ рдЕрднреА рднреА рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдЬрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП import() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖрдзреЗ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рдЕрднреА рднреА рдХреЛрдИ рдФрдкрдЪрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП import() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд▓реЛрдб рдХрд░рдиреЗ

import React from 'react';
import ReactDOM from 'react-dom';
import { Icon } from 'antd';

ReactDOM.render(
  <Icon type="github" />,
  document.getElementById('root')
);

image

image

  • рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИ: @loadable/component рдФрд░ @babel/plugin-syntax-dynamic-import ред
    рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИ: @loadable/component рдФрд░ @babel/plugin-syntax-dynamic-import ред
  • рджреВрд╕рд░рд╛ рдЪрд░рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ icons рдХрд╛ рдлреЛрд▓реНрдбрд░ рдмрдирд╛рдирд╛ рд╣реИ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЖрдЗрдХрдиреЛрдВ рдХреЛ @ant-design/icons рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рд╣реИ:
    рджреВрд╕рд░рд╛ рдХрджрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ icons рд╣реИ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ @ant-design/icon рдореЗрдВ рд╕рднреА рдЖрдЗрдХрди рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рд╣реИ:

    #!/usr/bin/env node
    const fs = require('fs');
    const path = require('path');
    const util = require('util');
    const icons = require('@ant-design/icons');
    
    const fsMkdir = util.promisify(fs.mkdir);
    const fsWriteFile = util.promisify(fs.writeFile);
    
    // https://github.com/ant-design/ant-design-icons/blob/master/packages/icons-react/src/utils.ts#L94-L108
    const mapping = {
    fill: 'fill',
    outline: 'o',
    twotone: 'twotone',
    };
    const saveFlag = { encoding: 'utf8', mode: 0o644, flag: 'w' };
    
    (async () => {
    const dir = path.join(__dirname, 'icons');
    await fsMkdir(dir, 0o755);
    const processes = Object.values(icons).map(value => {
      if (value && value.name && value.theme) {
        // https://github.com/ant-design/ant-design-icons/blob/master/packages/icons-react/src/components/Icon.tsx#L38-L42
        const file = path.join(dir, `${value.name}-${mapping[value.theme]}.js`);
        const data = `export default ${JSON.stringify(value)}`;
        return fsWriteFile(file, data, saveFlag);
      }
    });
    await Promise.all(processes);
    })();
    

    @ant-design/icons icons рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╕рднреА рдЖрдЗрдХрди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рддрд╣рдд рд╕реАрдзреЗ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
    @ ant-design/icons icons рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╕рднреА рдЖрдЗрдХрди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рддрд╣рдд рд╕реАрдзреЗ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

  • рддреАрд╕рд░рд╛ рдХрджрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рд▓рд┐рдП Antd рдХреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдШрдЯрдХреЛрдВ / рдЖрдЗрдХрди / index.tsx рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ Icon.jsx рдпрд╛ Icon.js , рдФрд░ рдлрд┐рд░ рд╢реБрджреНрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдбред (рдпрджрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ Icon.tsx рдпрд╛ Icon.ts рд░реВрдк рдореЗрдВ рднреА рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)
    рддреАрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ Antd рдХреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдШрдЯрдХреЛрдВ / рдЖрдЗрдХрди / index.tsx рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ, рдФрд░ Icon.jsx рдпрд╛ Icon.js рджреЗрдВ, рдлрд┐рд░ рдХреЛрдб рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рд╢реБрджреНрдз рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред (рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ Icon.tsx рдпрд╛ Icon.ts рд░реВрдк рдореЗрдВ рднреА рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)
    рдлрд┐рд░ рдЗрд╕ рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рдФрд░ рдорд╛рдВрдЧ рдкрд░ рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП import() рд╕рд╛рде @loadable/component рдХрд░реЗрдВред
    рдлрд┐рд░ рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @loadable/component import() рд╕рд╛рде @loadable/component рдХрд░реЗрдВред

    diff -- a/Icon.tsx b/Icon.jsx
    --- a/Icon.tsx
    +++ b/Icon.jsx
    @@ -1,70 +1,29 @@
    import * as React from 'react';
    import classNames from 'classnames';
    -import * as allIcons from '@ant-design/icons/lib/dist';
    +import loadable from '@loadable/component';
    import ReactIcon from '@ant-design/icons-react';
    -import createFromIconfontCN from './IconFont';
    +import createFromIconfontCN from 'antd/es/icon/IconFont';
    import {
    svgBaseProps,
    withThemeSuffix,
    removeTypeTheme,
    getThemeFromTypeName,
    alias,
    -} from './utils';
    +} from 'antd/es/icon/utils';
    -import warning from '../_util/warning';
    +import warning from 'antd/es/_util/warning';
    -import LocaleReceiver from '../locale-provider/LocaleReceiver';
    +import LocaleReceiver from 'antd/es/locale-provider/LocaleReceiver';
    -import { getTwoToneColor, setTwoToneColor } from './twoTonePrimaryColor';
    +import { getTwoToneColor, setTwoToneColor } from 'antd/es/icon/twoTonePrimaryColor';
    +
    +const AllIcons = loadable.lib(props => import(
    +  /* webpackChunkName: "icons/icon-" */
    +  `./icons/${props.type}.js`
    +));
    
    // Initial setting
    -ReactIcon.add(...Object.keys(allIcons).map(key => (allIcons as any)[key]));
    setTwoToneColor('#1890ff');
    -let defaultTheme: ThemeType = 'outlined';
    +let defaultTheme = 'outlined';
    -let dangerousTheme: ThemeType | undefined = undefined;
    +let dangerousTheme = undefined;
    -
    -export interface TransferLocale {
    -  icon: string;
    -}
    -
    -export interface CustomIconComponentProps {
    -  width: string | number;
    -  height: string | number;
    -  fill: string;
    -  viewBox?: string;
    -  className?: string;
    -  style?: React.CSSProperties;
    -  spin?: boolean;
    -  rotate?: number;
    -  ['aria-hidden']?: string;
    -}
    -
    -export type ThemeType = 'filled' | 'outlined' | 'twoTone';
    -
    -export interface IconProps {
    -  tabIndex?: number;
    -  type?: string;
    -  className?: string;
    -  theme?: ThemeType;
    -  title?: string;
    -  onKeyUp?: React.KeyboardEventHandler<HTMLElement>;
    -  onClick?: React.MouseEventHandler<HTMLElement>;
    -  component?: React.ComponentType<CustomIconComponentProps>;
    -  twoToneColor?: string;
    -  viewBox?: string;
    -  spin?: boolean;
    -  rotate?: number;
    -  style?: React.CSSProperties;
    -  prefixCls?: string;
    -  role?: string;
    -}
    -
    -export interface IconComponent<P> extends React.SFC<P> {
    -  createFromIconfontCN: typeof createFromIconfontCN;
    -  getTwoToneColor: typeof getTwoToneColor;
    -  setTwoToneColor: typeof setTwoToneColor;
    -  unstable_ChangeThemeOfIconsDangerously?: typeof unstable_ChangeThemeOfIconsDangerously;
    -  unstable_ChangeDefaultThemeOfIcons?: typeof unstable_ChangeDefaultThemeOfIcons;
    -}
    -
    -const Icon: IconComponent<IconProps> = props => {
    +const Icon = props => {
    const {
      // affect outter <i>...</i>
      className,
    @@ -107,7 +66,7 @@
      [`anticon-spin`]: !!spin || type === 'loading',
    });
    
    -  let innerNode: React.ReactNode;
    +  let innerNode;
    
    const svgStyle = rotate
      ? {
    @@ -116,7 +75,7 @@
        }
      : undefined;
    
    -  const innerSvgProps: CustomIconComponentProps = {
    +  const innerSvgProps = {
      ...svgBaseProps,
      className: svgClassString,
      style: svgStyle,
    @@ -165,12 +124,19 @@
        dangerousTheme || theme || defaultTheme,
      );
      innerNode = (
    -      <ReactIcon
    -        className={svgClassString}
    -        type={computedType}
    -        primaryColor={twoToneColor}
    -        style={svgStyle}
    -      />
    +      <AllIcons type={computedType}>
    +        {({ default: loadedIcon }) => {
    +          ReactIcon.add(loadedIcon);
    +          return (
    +            <ReactIcon
    +              className={svgClassString}
    +              type={computedType}
    +              primaryColor={twoToneColor}
    +              style={svgStyle}
    +            />
    +          );
    +        }}
    +      </AllIcons>
      );
    }
    
    @@ -181,7 +147,7 @@
    
    return (
      <LocaleReceiver componentName="Icon">
    -      {(locale: TransferLocale) => (
    +      {locale => (
          <i
            aria-label={type && `${locale.icon}: ${type}`}
            {...restProps}
    @@ -196,7 +162,7 @@
    );
    };
    
    -function unstable_ChangeThemeOfIconsDangerously(theme?: ThemeType) {
    +function unstable_ChangeThemeOfIconsDangerously(theme) {
    warning(
      false,
      'Icon',
    @@ -206,7 +172,7 @@
    dangerousTheme = theme;
    }
    
    -function unstable_ChangeDefaultThemeOfIcons(theme: ThemeType) {
    +function unstable_ChangeDefaultThemeOfIcons(theme) {
    warning(
      false,
      'Icon',
    
  • рдЕрдВрддрд┐рдо рдЪрд░рдг рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ:
    рдЕрдВрддрд┐рдо рдЪрд░рдг рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ:
    `` `Diff
    diff - a / webpack.js b / webpack.js
    --- a / webpack.js
    +++ b / webpack.js
    @@ -1,4 +1,5 @@
    const path = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('path');
    + const webpack = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('webpack');
    const HtmlWebpackPlugin = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('html-webpack-plugin');
    const TerserPlugin = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('terser-webpack-plugin');

    @@ -33,12 +34,16 @@
    рдкреНрд▓рдЧрдЗрдиреНрд╕: [
    рдирдпрд╛ HtmlWebpackPlugin ({
    рд╢реАрд░реНрд╖рдХ: 'рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдкреГрд╖реНрда',
    рд╕рд╛рдБрдЪрд╛: path.join (__ dirname, 'public / index.html'),
    рдореЗрдЯрд╛: {
    рд╡реНрдпреВрдкреЛрд░реНрдЯ: 'рдЪреМрдбрд╝рд╛рдИ = рдбрд┐рд╡рд╛рдЗрд╕-рдЪреМрдбрд╝рд╛рдИ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ-рд╕реНрдХреЗрд▓ = 1',
    },
    рд╣реИрд╢: рд╕рдЪ,
    })

    • рдирдпрд╛ рд╡реЗрдмрдкреИрдХ .NormalModuleReplacementPlugin (
    • /node_modules\/antd\/es\/icon\/index.js/,
    • path.resolve (__ dirname, 'Icon.jsx')
    • ),
      ],
      рд╕рдВрдХрд▓реНрдк: {
      рдореЙрдбреНрдпреВрд▓: ['рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕'],
      @@ -56,13 +61,14 @@
      рдЙрдкрдпреЛрдЧ: [{
      рд▓реЛрдбрд░: 'рдХреЛрд▓рд╛рд╣рд▓-рд▓реЛрдбрд░',
      рд╡рд┐рдХрд▓реНрдк: {
      рдкреНрд░реАрд╕реЗрдЯ: [
      ['@ рдмрдмреЗрд▓ / рдкреНрд░реАрд╕реЗрдЯ-рдПрдирд╡', {рд▓рдХреНрд╖реНрдп: тАЩ> реи.рек ,рем%, рдореГрдд рдирд╣реАрдВтАЩ}],
      '@ рдХреЛрд▓рд╛рд╣рд▓ / рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛',
      ],
      рдкреНрд▓рдЧрдЗрдиреНрд╕: [
    • [ '@ рдХреЛрд▓рд╛рд╣рд▓ / рдкреНрд▓рдЧрдЗрди-рд╡рд╛рдХреНрдп рд░рдЪрдирд╛-рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд'],
      [ '@ рдХреЛрд▓рд╛рд╣рд▓ / рдкреНрд▓рдЧрдЗрди-рдкреНрд░рд╕реНрддрд╛рд╡-рд╡рд░реНрдЧ-рдЧреБрдг'],
      ['рдЖрдпрд╛рдд', {рдкреБрд╕реНрддрдХрд╛рд▓рдпрдирд╛рдо: import antd тАЩ, рдкреБрд╕реНрддрдХрд╛рд▓рдпрдбрд╛рдпрд░реЗрдХреНрдЯрд░реА:, esтАЩ, рд╢реИрд▓реА: рд╕рддреНрдп},)
      ],
      },
      }]

      `` `

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдЖрдЗрдХрди рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЖрдЗрдХрди рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛, рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдорд╛рдЙрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдФрд░ рдЖрдЗрдХрди рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рддрднреА рд▓реЛрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдЬрдм рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдХреЗ рдЖрдЗрдХрди рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ; рдЗрд╕реА рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреИрдХреЗрдЬреНрдб рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд▓рдЧрднрдЧ 50K рдХреА рдЖрдЗрдХрди рд╕реВрдЪреА рдбреЗрдЯрд╛ рд╣реИ ( Icon.jsx рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдЬрд╛рджреВ рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдирд╛рдо рдирд╛рдорд┐рдд рдХрд░рдирд╛) рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдЖрдЗрдХрди рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЕрдиреБрдкрд▓рдмреНрдз рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдорд╛рдЙрд╕ рдХреЛ рд▓рд╛рдкрддрд╛ рдЖрдЗрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдЗрдХрди рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрдХрди рд▓реЛрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдкреИрдХреЗрдЬреНрдб рдЗрдВрдбреЗрдХреНрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЖрдЗрдХрди рд╕реВрдЪреА рдбреЗрдЯрд╛ рдХрд╛ рд▓рдЧрднрдЧ 50K рд╣реИ ( Icon.jsx рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдЬрд╛рджреВ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛) рдЗрд╕ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред

рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдХрди рдореЗрдВ рдЖрдЗрдХрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реЗрдмрдкреИрдХ рдореЙрдбреНрдпреВрд▓ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдЗрдХрди рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЖрдХрд╛рд░ рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреИрдХ рдХреА рдЧрдИ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ 50K рдЖрдЗрдХрди рд╕реВрдЪреА рдбреЗрдЯрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 3M рдХреЗ рдХрд░реАрдм рдЖрдХрд╛рд░ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рдпрд╛ рдПрдХ рджрд░реНрдЬрди рдЖрдЗрдХрди рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдмрд╣реБрдд рдмрдбрд╝реА рдирд╣реАрдВ рд╣реЛрдЧреА, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЕрдзрд┐рдХ, рдЗрд╕рдХрд╛ рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдкрд░ рдмрд╣реБрдд рдХрдо рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдХрди рдореЗрдВ рдЖрдЗрдХрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡реЗрдмрдкреИрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ icons рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЖрдХрд╛рд░ рдкрд╣рд▓реЗ рдкреИрдХ рдХреА рдЧрдИ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЗрдХрди рд╕реВрдЪреА рдбреЗрдЯрд╛ рдХрд╛ 50K, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреИрдХреЗрдЬреНрдб рдЖрдХрд╛рд░ 3M рдХреЗ рдХрд░реАрдм рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рди рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдпрд╛ рдПрдХ рджрд░реНрдЬрди рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдмрд╣реБрдд рдмрдбрд╝реА рдирд╣реАрдВ рд╣реИред , рдФрд░ рдЪреВрдБрдХрд┐ рдпрд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдХрд┐рд╕реА рдПрдХ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдорд╛рдЙрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдкрд░ рдкреНрд░рднрд╛рд╡ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред

@ jinliming2 рдПрдХ рд╢рд╛рдВрдд рд╕рдВрд╢реЛрдзрди рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗрдмрдкреИрдХ рдЖрдпрд╛рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд░ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ, рдЬреИрд╕реЗ рдХрд┐ рдЖрдпрд╛рдд (рдлреВ), рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдХреЗрд╢рди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ foo рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдХреЛрдИ рднреА рдкрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдпрд╛рдд () рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЙрдбреНрдпреВрд▓ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА, рдЗрд╕рд▓рд┐рдП рдмрдВрдбрд▓рд┐рдВрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реЗрдЯ рддрдХ рд╕реАрдорд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЬрдм рддрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐, atd рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рди рдХреЗрд╡рд▓ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдереЛрдбрд╝рд╛ рд╢рд░реНрдордирд╛рдХ рд╣реИред

@aryzing рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рдХрд▓реНрдк 1 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ # 12888 рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрдЧреАред

svr рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП xhr рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ to
рдЖрд░реНрдЪрд░-SVGs

рдЪреВрдБрдХрд┐ ant deisgn рд╕реНрд╡рдпрдВ рдЕрдзрд┐рдХ рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк хЫ╛цаЗцЦЗф╗╢ рдХреЛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рд╡реЙрд▓реНрдпреВрдо рдкрд░ рдХрдмреНрдЬрд╛ рди рдХрд░реЗред рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЪреВрдВрдХрд┐ рдЪреАрдВрдЯреА рдбреАрдЬрд┐рдЧреНрди рд╕реНрд╡рдпрдВ рдЕрдзрд┐рдХ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

webpack-ant-icon-loader

@rororofff рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ $ 2.00 рдХрд╛ рд╡рд┐рддреНрдд рдкреЛрд╖рдг рдХрд┐рдпрд╛ рд╣реИред


рдЗрд╕ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рднрдпрднреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдХреЗрд╡рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ https://github.com/AustinGreen/cra-antd-starter

рдЗрд╕рдореЗрдВ рдЖрдЗрдХрди рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕, рдФрд░ рдмрд┐рдирд╛ рдЦрд╛рд░рд┐рдЬ рдХрд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред @Ndbroadbent , @patricklafrance рдФрд░ рдкреВрд░реА рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдХреЛ рдЙрдирдХреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЗрд╕ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рднрдпрднреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдХреЗрд╡рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ https://github.com/AustinGreen/cra-antd-starter

рдЗрд╕рдореЗрдВ рдЖрдЗрдХрди рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕, рдФрд░ рдмрд┐рдирд╛ рдЦрд╛рд░рд┐рдЬ рдХрд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред @Ndbroadbent , @patricklafrance рдФрд░ рдкреВрд░реА рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдХреЛ рдЙрдирдХреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдЗрд╕реЗ Nextjs рдРрдк рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

@AustinGreen рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

image

рд╕рд╛рдЗрдбрдмрд╛рд░ рд╡рд╛рд▓реЗ рдРрдк рдФрд░ рдПрдХ рдмрдЯрди рдХреЗ рд▓рд┐рдП ~ 100kB Gzipped рдХрд╛ рдЖрдХрд╛рд░ рдЕрднреА рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред

@anjmao рдпрджрд┐ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдФрд░ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдпрджрд┐ рдЖрдк рдПрдХ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ ~ 100kB рдлреНрд░рдВрдЯ-рдПрдВрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП Gzipped, ~ 5 рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ (рд╕реЗ) рдПрдХ рд╡реНрдпрд╛рдкрдХ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп), рдЪрд┐рд╣реНрди, рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╕реБрдВрджрд░ рдорд╛рдирдХ рд╣реИред

@anjmao рдпрджрд┐ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдФрд░ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдпрджрд┐ рдЖрдк рдПрдХ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ ~ 100kB рдлреНрд░рдВрдЯ-рдПрдВрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП Gzipped, ~ 5 рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ (рд╕реЗ) рдПрдХ рд╡реНрдпрд╛рдкрдХ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп), рдЪрд┐рд╣реНрди, рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╕реБрдВрджрд░ рдорд╛рдирдХ рд╣реИред

https://github.com/ant-design/ant-design/issues/12011#issuecomment -420038579ред рдпрд╣рд╛рдБ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ

@ рдСрд╕реНрдХрд░-рд░реЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдХреЗрд╡рд▓ ~ 100kB рд╣реИ рдФрд░ ~ 400kB рдирд╣реАрдВ)

@tobiaslins рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рдж рд╕реЗ
рдЬрдм рдореИрдВ рдЗрд╕реЗ рдПрдХ рдиреНрдпреВрдЯреЗрдХреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рд┐рдВрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддреЗ рд╣реИрдВ:
The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render.

рдмрд╕ FYI рдХрд░реЗрдВ, рд╡реЗрдм рдкреИрдХ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг:
https://github.com/atjason/ant-design-vue-demo

рджреЗрдЦреЗрдВ:
https://github.com/HeskeyBaozi/reduce-antd-icons-bundle-demo

рдкреИрдХреЗрдЬ рдХрд╛ рдЖрдХрд╛рд░ Hello World :

image

рдЪреВрдБрдХрд┐ ant deisgn рд╕реНрд╡рдпрдВ рдЕрдзрд┐рдХ рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк хЫ╛цаЗцЦЗф╗╢ рдХреЛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рд╡реЙрд▓реНрдпреВрдо рдкрд░ рдХрдмреНрдЬрд╛ рди рдХрд░реЗред рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЪреВрдВрдХрд┐ рдЪреАрдВрдЯреА рдбреАрдЬрд┐рдЧреНрди рд╕реНрд╡рдпрдВ рдЕрдзрд┐рдХ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

webpack-ant-icon-loader

рдкреЛрд╕реНрдЯреАрд░рд┐рдЯреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣реИрд▓реЛ, рдЬрдм @ jinliming2 рд╕рдорд╛рдзрд╛рди рдЬрд╛рд░реА рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?
рд╡реЗрдмрдкреИрдХ-рдПрдВрдЯреА-рдЖрдЗрдХрди-рд▓реЛрдбрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
webpack-ant-icon-loader рд╕рд╛рде?
рдореБрдЭреЗ рджреЗрдЦрдиреЗ рджреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдирдорд╕реНрдХрд╛рд░ @ beven91!

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рд╣реИрдВ рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛
рдЖрдВрдХрдбрд╝рд╛ рдХреНрдпреЛрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓ рдиреЗ рдореБрдЭреЗ рдорд╛рдорд▓реЗ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рджрд┐рдпрд╛
рд╕рдорд░реНрдкрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдпрд╛
рд╕рдордп рдХрд╛рдо рдЖрдпрд╛! рдореИрдВ рдкрд░рд┐рдгрд╛рдореА рдмрдВрдбрд▓ рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ 1.21 рдПрдордмреА рдмрдЪрд╛ рд░рд╣рд╛ рд╣реВрдВ
рдЬреЛ рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЛрдиреЛрдВ рд╕реЗ рд╢рд╛рдирджрд╛рд░ рд╣реИ
рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд░реВрдк рд╕реЗред

рдореИрдВ рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЕрдЧрд░ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╣реИ
рд╕рдорд╕реНрдпрд╛:
https://github.com/vladimirmoushkov/ant-icons-webpack-loade-test/#readme

рд╡реЗрдмрдкреИрдХ-рдПрдВрдЯреА-рдЖрдЗрдХрди-рд▓реЛрдбрд░ рдХреЗ рдмрд┐рдирд╛ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:
bundle.development.js 4.59 MiB рдРрдк [рдЙрддреНрд╕рд░реНрдЬрд┐рдд] рдРрдк

рд╡реЗрдмрдкреИрдХ-рдПрдВрдЯреА-рдЖрдЗрдХрди-рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:
../../index.html 555 рдмрд╛рдЗрдЯреНрд╕ [рдЙрддреНрд╕рд░реНрдЬрд┐рдд]
0.bundle.development.js 1.21 MiB 0 [рдЙрддреНрд╕рд░реНрдЬрд┐рдд]
bundle.development.js 3.41 MiB рдРрдк [рдЙрддреНрд╕рд░реНрдЬрд┐рдд] рдРрдк

рдиреЛрдЯреЛрдВ рдХреА рдЬреЛрдбрд╝реА:

  • рдЕрдЧрд░ рдЖрдк 0.bundle.development.js рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рддреЛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛
    рд╢рд┐рд▓реНрдкрдХреГрддрд┐ред
  • рдЖрдЗрдХрди рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рдж рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╡реЗ рдкреГрд╖реНрда рдкрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЖрдкрдХрд╛ umirc.js рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдХреИрд╕реЗ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╢реБрдХреНрд░ рдкрд░, рдЕрдкреНрд░реИрд▓ 5, 2019 рдХреЛ 2:38 рдЕрдкрд░рд╛рд╣реНрди beven91 рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЖрдкрдХреЗ рд╕рд╛рде webpack-ant-icon-loader?
рдореБрдЭреЗ рджреЗрдЦрдиреЗ рджреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/ant-design/ant-design/issues/12011#issuecomment-480244343 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AUPfoCCVrb5j4s8Qleju8LvdPsxC02FFks5vdzW7gaJpZM4WW7EA
ред

https://github.com/AustinGreen/cra-antd-starter

@AustinGreen рд╕рд┐рд░реНрдл рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рд╣реИ, рдХрд┐ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдЪреАрдВрдЯреА рджрд╕реНрддрд╛рд╡реЗрдЬ react-app-rewired рдФрд░ babel-plugin-import рдкреНрд░рд▓реЗрдЦрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдЕрд▓рдЧ рдХреИрд╕реЗ рд╣реИ - https://ant.design/docs/react/use-with-create-react -рдмрд╛рдк ?

GitHub
рдмрдирд╛рдПрдБ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдЪреАрдВрдЯреА рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ - рдСрд╕реНрдЯрд┐рдирдЧреНрд░реАрди / рдХреНрд░реИрдб-рдПрдирдЯ-рд╕реНрдЯрд╛рд░реНрдЯрд░
рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝-рдХреНрд▓рд╛рд╕ UI рдбрд┐рдЬрд╝рд╛рдЗрди рднрд╛рд╖рд╛ рдФрд░ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд░рд┐рдПрдХреНрдЯ-рдЖрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЙрджреНрдпрдореЛрдВ рдореЗрдВ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд░рд┐рдПрдХреНрдЯ GPS рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕реЗ рдПрдХ

@annjawn рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк 2.0 рдХреЗ рд░реВрдк рдореЗрдВ, рд░рд┐рдПрдХреНрд╢рди-рдРрдк-рд░рд┐рд╡рд╛рдЗрдВрдб рдЕрдм рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреНрд░реИрдХреЛ + рдХреНрд░реИрдХреЛ-рдПрдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ CRA 2.0 рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ-рдРрдк-рд░реАрд╡рд╛рдЗрд░реНрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдереЗред

@ Beven91 рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЗрд╕ рднрд╛рдЧ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

  • рдЖрдЗрдХрди рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рдж рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╡реЗ рдкреГрд╖реНрда рдкрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЖрдкрдХрд╛ umirc.js рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдХреИрд╕реЗ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреВрд░реЗ рдмрдВрдбрд▓ рдореЗрдВ рдЖрдЗрдХрди рдХреЗ рдмреАрдЪ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рдЕрднреА рднреА рдЕрд▓рдЧ рдмрдВрдбрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдиреЗ рд╣реБрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдЕрд▓рдЧ рдмрдВрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдкреГрдердХреНрдХрд░рдг рдХреЛ рд╡реНрдпрд░реНрде рдмрдирд╛рддрд╛ рд╣реИред

@annjawn рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк 2.0 рдХреЗ рд░реВрдк рдореЗрдВ, рд░рд┐рдПрдХреНрд╢рди-рдРрдк-рд░рд┐рд╡рд╛рдЗрдВрдб рдЕрдм рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреНрд░реИрдХреЛ + рдХреНрд░реИрдХреЛ-рдПрдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ CRA 2.0 рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ-рдРрдк-рд░реАрд╡рд╛рдЗрд░реНрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдереЗред

@AustinGreen рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ CRACO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рд╣реА рдмрд╛рдд рд╣реИред Btw, рдореИрдВ рднреА рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЖрдкрдХреА рд╡рд┐рдзрд┐ + рдореЙрдбреНрдпреВрд▓рд░ рдЖрдпрд╛рддреЛрдВ рдХреЛ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ + async рдШрдЯрдХ рд▓реЛрдб рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдХрдореА рдкреНрд░рджрд╛рди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

@vladimirmoushkov
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рджреЗрд░ рд╣реЛ рд░рд╣реА рд╣реИ, рдореИрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ will

рдирдорд╕реНрдХрд╛рд░ @vladimirmoushkov

рдЖрдк рдпрд╣рд╛рдБ рд╡рд┐рд╡рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЪреАрдВрдЯреА-рдорд╛рдЙрд╕-webpack-loade-рдкрд░реАрдХреНрд╖рдг # 1

рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (antd> = 3.9)

  1. рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = {
  //...
  resolve: {
    alias: {
      "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js")
    }
  }
};
  1. рдмрдирд╛рдПрдВ icons.js рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ src/ рдпрд╛ рдЬрд╣рд╛рдБ рднреА рдЖрдк рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ!
    рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рдПрдирдЯреАрдбреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП! рдореБрдЭреЗ рдХреЗрд╡рд▓ atd рдХреЗ рдЪреБрдирд┐рдВрджрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрди рдЖрдЗрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
export {
  default as DownOutline
} from "@ant-design/icons/lib/outline/DownOutline";

рдпрд╣ react-app-rewire (create-react-app рд╕рдВрд╢реЛрдзрдиреЛрдВ) рдХреЗ рд╕рд╛рде config-overwrites.js рд╕рд╛рде рднреА рд╕рдВрднрд╡ рд╣реИ

рдпрд╣ рдЙрди рдЪреАрдВрдЯреА рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓рд░реНрдЯ рдШрдЯрдХ рдЪреЗрдХ рдФрд░ рдХреНрд▓реЛрдЬрд╝ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ

@ рд╡реЗрдгреБрдЧреЛрдкрд╛рд▓46 рдЖрдк рдЕрдкрдиреЗ icons.js рдХреЗ рд╕рд╛рде рдЙрди рдЖрдЗрдХрди (рдЬреЛ рдХрд┐ рдЪреАрдВрдЯреА рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ) рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд░реАрдм рд╣реИрдВ; рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЛ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЗрдХрди.рдЬреЗрдПрд╕ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдпрд╣ рдХреИрд╕реЗ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪреАрдВрдЯреА рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЖрдкрдХреЗ icons.js рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХреЗ?

рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рд╣реИрдХ:

  1. рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = {
  //...
  resolve: {
    alias: {
      "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js")
    }
  }
};
  1. рдмрдирд╛рдПрдВ icons.js рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ src/ рдпрд╛ рдЬрд╣рд╛рдБ рднреА рдЖрдк рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ!
    рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рдПрдирдЯреАрдбреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП! рдореБрдЭреЗ рдХреЗрд╡рд▓ atd рдХреЗ рдЪреБрдирд┐рдВрджрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрди рдЖрдЗрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
export {
  default as DownOutline
} from "@ant-design/icons/lib/outline/DownOutline";

рдпрд╣ react-app-rewire (create-react-app рд╕рдВрд╢реЛрдзрдиреЛрдВ) рдХреЗ рд╕рд╛рде config-overwrites.js рд╕рд╛рде рднреА рд╕рдВрднрд╡ рд╣реИ

рдФрд░ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдЙрдкрдпреЛрдЧ generateIconsList.sh рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП src/icons.js :

grep -iR \<Icon\  ./src/ | cut -d: -f2 | sed -e s/.*\<Icon\ //g | sort | uniq | while read icon; do 
    theme='Outline';
    themelowercase="outline";
    if [[ $icon =~ ^.*twoTone.*$ ]]; then
        theme="TwoTone";
        themelowercase="twotone";
    fi
    if [[ $icon =~ ^.*fill.*$ ]]; then
        theme="Fill";
        themelowercase="fill";
    fi
    icon=$(echo $icon | sed -e 's/type\=\"//g'| sed -e 's/\".*//g' | sed -e 's/\-/ /g')
    icon=$(python -c "print('"$icon"'.title())")
    icon=$(echo $icon | sed -e 's/ //g')
    core_path="@ant-design/icons/lib/"$themelowercase"/"$icon$theme
    search_path="node_modules/"$core_path".js"
    if [ -e $search_path ]; then
        echo "export { default as "$icon$theme" } from \""$core_path"\";"
    fi
done | sort | uniq

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░реВрдЯ рд╕реЗ generateIconsList.sh 2>/dev/null >src/icons.js рдЪрд▓рд╛рдХрд░ - рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрджрд╕реВрд░рдд рд╣реИрдХ рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдЖрдЗрдХрди рд╕рдВрджрд░реНрдн рдпрд╛ рдмрд╣реБ <Icon /> рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдкрдХрдбрд╝рддреА рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рдЖрдЗрдХрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдВрдд рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИ - рдЕрдВрддрд┐рдо рдмрдВрдбрд▓ рдореЗрдВ 1.1 mb рдХрдо рд╣реИ!

рдЖрдк рдпрд╣ рдХреИрд╕реЗ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪреАрдВрдЯреА рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЖрдкрдХреЗ icons.js рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХреЗ?

рдореИрдВ рд╕рд┐рд░реНрдл рдЙрди рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдЧрд╛рдпрдм (рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ) рд╣реИрдВ рд▓реЗрдХрд┐рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рддрдиреЗ antd рдХреЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 10 рдорд┐рдирдЯ рд▓рдЧ рдЧрдПред (рдореИрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ atd рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБ, рд╣рд╛рд▓рд╛рдБрдХрд┐)

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдЧрд░ рдореЗрдЬ рдкрд░ рд╕реЙрд░реНрдЯрд░ рддреАрд░ рдЧрд╛рдпрдм рд╣реИрдВ:

  1. рдПрдВрдЯ рдЯреЗрдмрд▓ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдФрд░ <i aria-label="icon: caret-down" class="anticon anticon-caret-down ant-table-column-sorter-down off"> ред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ <i /> рдЯреИрдЧ рдЦрд╛рд▓реА рд╣реИред рдЖрдк рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдЗрдХрди рдХрд╛ рдирд╛рдо caret-down ред
  2. рдЗрд╕ рдЖрдЗрдХрди рдХреЛ @ant-design/icons/lib рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЦреЛрдЬреЗрдВ, filled рдпрд╛ outline рдлрд╝реЛрд▓реНрдбрд░ (рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдЗрдХрди рдЪрд╛рд╣рд┐рдП) рдФрд░ icons.js рдирдпрд╛ рдЖрдпрд╛рдд рдЬреЛрдбрд╝реЗрдВ :
export { default as CaretDownOutline } from '@ant-design/icons/lib/outline/CaretDownOutline';

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдВрдЯреА рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реА рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧрдВрджреЗ рд╣реИрдХ рд╕реЗ рдмрдЪ рд╕рдХреЗрдВред

рдирдорд╕реНрддреЗ !

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдЦрдмрд░? рдХреНрдпрд╛ рдпрд╣ рдЕрдЧрд▓реЗ atd рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИ?
рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА ( webpack-ant-icon-loader , babel-import-plugin ) рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдзрдиреНрдпрд╡рд╛рдж!

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ!

@zlab @nuintun @anjmao рдорджрдж рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ https://zlab.github.io/report.html рд╕реЗ рдкреВрдЫреЗрдВ рдХрд┐ рдпрд╣ рдкреЗрдЬ рдХрд┐рд╕ рдкреНрд▓рдЧ-рдЗрди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╛рдпрд╛, рдпрд╣ рд╡реЗрдмрдкреИрдХ-рдмрдВрдбрд▓-рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рд╣реИ

рдХреЗрд╡рд▓ рдореЛрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 500k рдЖрдЗрдХрди рдХрд╛ рдХрд╛рдо рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдпрд╣ рдЖрдзреЗ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рд╣реИ?

Antd рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рдирд╛, рдРрд╕рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ ...

рдЕрдм рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ 500kb рдкрд░ рдЖрдЗрдХрди рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдФрд░ icon.ts рдореЗрдВ рдЖрдЗрдХрди рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ npm start рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ

ERROR in ./node_modules/antd/lib/icon/index.js
Module not found: Error: Can't resolve '@ant-design/icons/lib/dist' in 'xxx\node_modules\antd\lib\icon'

рдпрд╣ рдореЗрд░рд╛ рд╡реЗрдмрдкреИрдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЙрдиреНрдлрд┐рдЧ рд╣реИ

resolve: {
      modules: [path.resolve(__dirname, '../src'), 'node_modules'],
      alias: {
        '@ant-design/icons/lib/dist$': path.resolve(
          __dirname,
          '../src/utils/antdIcon.ts',
        ),
      },
      extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
      plugins: [
        new TsConfigPathsPlugin({
          tsconfig: path.resolve(__dirname, '../tsconfig.json'),
        }),
      ],
    },

1. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдЗрдХрди рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреИрдХреЗрдЬ рдХреНрдпреЛрдВ рд╣реИ, рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ?
image
2. рд╡реЗрдмрдкреИрдХ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ = {'atd': 'antd'} рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА atd рдХреЛ рдкреИрдХреЗрдЬ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?

1. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдЗрдХрди рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреИрдХреЗрдЬ рдХреНрдпреЛрдВ рд╣реИ, рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ?
2. рд╡реЗрдмрдкреИрдХ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ = {'atd': 'antd'} рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА atd рдХреЛ рдкреИрдХреЗрдЬ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?

@wiiler

  1. рдЗрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ, рдпрд╣ рдПрдХ рдШрдЯрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдЗрдХрди рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ

    https://github.com/ant-design/ant-design/issues/12011#issuecomment -418003883
    рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд┐рд▓реНрдЯ-рдЗрди рдШрдЯрдХ рдЬреЛ <Icon /> , рдЬреИрд╕реЗ <DatePicker /> , <Select /> рдЖрджрд┐, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

  2. рдпрджрд┐ рдЖрдк рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмреЗрдмрд▓-рдкреНрд▓рдЧрдЗрди-рдЖрдпрд╛рдд рдкреНрд▓рдЧрдЗрди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдФрд░ icon.ts рдореЗрдВ рдЖрдЗрдХрди рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ npm start рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ

ERROR in ./node_modules/antd/lib/icon/index.js
Module not found: Error: Can't resolve '@ant-design/icons/lib/dist' in 'xxx\node_modules\antd\lib\icon'

рдпрд╣ рдореЗрд░рд╛ рд╡реЗрдмрдкреИрдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЙрдиреНрдлрд┐рдЧ рд╣реИ

resolve: {
      modules: [path.resolve(__dirname, '../src'), 'node_modules'],
      alias: {
        '@ant-design/icons/lib/dist$': path.resolve(
          __dirname,
          '../src/utils/antdIcon.ts',
        ),
      },
      extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
      plugins: [
        new TsConfigPathsPlugin({
          tsconfig: path.resolve(__dirname, '../tsconfig.json'),
        }),
      ],
    },

рдореИрдВ рдЗрди рджреЛрдиреЛрдВ рдкреНрд░рдерд╛рдУрдВ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ

@ As3ass1n
рдХреНрдпреЛрдВ '../src/utils/antdIcon.ts' рдореЗрдВ '..' рд╣реИ? рдХреНрдпрд╛ рд╡реЗрдмрдкреИрдХ рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ?

1. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдЗрдХрди рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреИрдХреЗрдЬ рдХреНрдпреЛрдВ рд╣реИ, рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ?
2. рд╡реЗрдмрдкреИрдХ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ = {'atd': 'antd'} рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА atd рдХреЛ рдкреИрдХреЗрдЬ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?

@wiiler

  1. рдЗрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ, рдпрд╣ рдПрдХ рдШрдЯрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдЗрдХрди рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ
    > # 12011 (рдЯрд┐рдкреНрдкрдгреА)
    > рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд┐рд▓реНрдЯ-рдЗрди рдШрдЯрдХ рдЬреЛ <Icon /> , рдЬреИрд╕реЗ <DatePicker /> , <Select /> рдЖрджрд┐, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
  2. рдпрджрд┐ рдЖрдк рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмреЗрдмрд▓-рдкреНрд▓рдЧрдЗрди-рдЖрдпрд╛рдд рдкреНрд▓рдЧрдЗрди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдорд┐рд▓ рдЧрдпрд╛, рдзрдиреНрдпрд╡рд╛рдж

рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдФрд░ icon.ts рдореЗрдВ рдЖрдЗрдХрди рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ npm start рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ

ERROR in ./node_modules/antd/lib/icon/index.js
Module not found: Error: Can't resolve '@ant-design/icons/lib/dist' in 'xxx\node_modules\antd\lib\icon'

рдпрд╣ рдореЗрд░рд╛ рд╡реЗрдмрдкреИрдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЙрдиреНрдлрд┐рдЧ рд╣реИ

resolve: {
      modules: [path.resolve(__dirname, '../src'), 'node_modules'],
      alias: {
        '@ant-design/icons/lib/dist$': path.resolve(
          __dirname,
          '../src/utils/antdIcon.ts',
        ),
      },
      extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
      plugins: [
        new TsConfigPathsPlugin({
          tsconfig: path.resolve(__dirname, '../tsconfig.json'),
        }),
      ],
    },

рдореИрдВ рдЗрди рджреЛрдиреЛрдВ рдкреНрд░рдерд╛рдУрдВ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ

@ As3ass1n
рдХреНрдпреЛрдВ '../src/utils/antdIcon.ts' рдореЗрдВ '..' рд╣реИ? рдХреНрдпрд╛ рд╡реЗрдмрдкреИрдХ рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ?

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдореЗрд░реА рдЧрд▓рддреА рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЧрд▓рдд рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд▓рд┐рдЦрд╛ рдерд╛, рдФрд░ рдЕрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛? рд▓рдЧрднрдЧ 400 k рд╕реЗ рдмрдврд╝рд╛рдПрдБ

рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рд╕рдордп рдХрд╛ рдЕрдиреБрдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

image

рдмрдВрдбрд▓ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд 490kb Icon рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдкрдпреЛрдЧреА рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдЕрд╕реНрдерд╛рдпреА рд╕реБрдзрд╛рд░ рд╣реИ рдЬреЛ рд╣рдо рддрдм рддрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд┐рд▓реАрдЬрд╝ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░рддреЗ?

@smddzcy рдзрд╛рдЧрд╛ рдкрдврд╝рд╛ рд╣реИ?

@ schester44 рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рдФрд░ ... рдореИрдВ рдЕрдХреНрд╖рд░, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╢рдмреНрджрд╛рдВрд╢ рдХрд╣рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджреВрд░ рдЬрд╛рдирд╛ рд╣реИ ... рдореИрдВ рд╣рд┐рдореНрдордд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдард┐рди рд╣реИ рдЬрд┐рдирдХреА рднрд╛рд╖рд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░ рднрд╛рд╖рд╛рдУрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ Etruscan- рд╡реНрдпреБрддреНрдкрдиреНрди рдЕрд▓реНрдлрд╛рдмреЗрдЯреНрд╕ рддрдХ рд╣реА рд╕реАрдорд┐рдд рд╣реИ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ purched-antd-icons рдкреИрдХреЗрдЬ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛ рдорд┐рд▓реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореИрдиреБрдЕрд▓ рд╣реИ; рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдбреЛрдо рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдХреЗ рд▓рд╛рдкрддрд╛ рдЖрдЗрдХрдиреЛрдВ рдХреЛ рд╕рдореЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 3-4 рдШрдВрдЯреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рд╣рдо рдЕрдкрдиреЗ рджреЗрд╡ / рд░рд┐рд╣рд╛рдИ рдЪрдХреНрд░ рдореЗрдВ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкреИрдХ рдХрд┐рдП рдЧрдП / рдСрдлрд╝рд▓рд╛рдЗрди-рдкреНрд░рдердо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛ рдмрд╣реБрдд рдорд╛рдореВрд▓реА iOS WKWebview RAM рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪ рд░рд╣реА рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрджрд┐ iOS рдореЛрдмрд╛рдЗрд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдВрдЧреЗред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣рд╛рдВ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЗрд╕ рдирдП рдЖрдИрдХреЙрди рдПрдкреАрдЖрдИ рдХреЛ рдЖрд╢реНрд░рд┐рдд рдФрд░ рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреА рд╣реЛрдЧреАред

@ afc163 ,

рдЖрдкрдиреЗ 15 рд╕рд┐рддрдВрдмрд░ 2018 рдХреЛ рдЬреЛ рд▓рд┐рдЦрд╛ рд╡рд╣ рдПрдХ рдЕрдЪреНрдЫреЗ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ (рдиреАрдЪреЗ Google рдЕрдиреБрд╡рд╛рдж)ред рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЕрдиреБрдорд╛рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрдм рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛?

рдкреБрд░рд╛рдиреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝реЗрдВред

import { Icon } from 'antd';
<Icon type="star" />

рдкреНрд░рджрд╛рддрд╛ рдирдпрд╛ API рдЬреИрд╕реЗ:

import Star from 'antd/icons/Star';
import Setting as SettingIcon from 'antd/icons/Setting';

<Star />
<SettingIcon />

рдФрд░ рдкреЗрдбрд╝ рд▓рдЧрд╛рдиреЗ рдпреЛрдЧреНрдп рддрд░реАрдХрд╛ рднреА:

import { Icon: { Star, Setting } } from 'antd';

<Star />
<SettingIcon />

@HeskeyBaozi @yesmeck

рд╡реА 4 рд░реЛрдбрдореИрдк рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕ рд╕рд╛рд▓ рдХреНрдпреВ 4 рдкрд░ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╢рд╛рдВрдд: рд╕реНрдорд╛рдЗрд▓реА:

V├аo Th 7, 1 thg 6, 2019 v├аo l├║c 01:51 рдЬрдЪ рдЧреБрдУ рд╕реВрдЪрдирд╛рдПрдВ @github.com
─С├г viс║┐t:

V4 рд░реЛрдбрдореИрдк рдХреЗ рдЕрдиреБрд╕рд╛рд░
https://github.com/ant-design/ant-design/issues/16911 , рдпрд╣ рд╣реЛрдЧрд╛
рдЗрд╕ рд╕рд╛рд▓ Q4 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ADKDE4TGAYRMSJQB246RQ33PYFXT7ANCNFSM4FS3WEAA
ред

ICYMI, рдЖрдЗрдХрди рдбреЙрдХреНрд╕ рдиреЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ред рдиреАрдЪреЗ рдЗрд╕рдХреА рдкреНрд░рддрд┐ред

"Icons 3.9.0 рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╕рднреА рдПрд╕рд╡реАрдЬреА рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдП рдЧрдП рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдЗрдХрди рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирдИ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ, рдЖрдк рдЖрдЧреЗ рдХреА рдкреНрд░рдЧрддрд┐ рдХреЗ рд▓рд┐рдП # 12011 рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореБрджрд╛рдп рд╕реЗ рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред "

рдЕрдВрддрд┐рдо рдмрд┐рдЯ рдХреВрд▓, рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯ рдФрд░ рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯ рдФрд░ рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░реА рдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛? рдпрд╣ рдХрдм рддрдХ рд╣реИ рдФрд░ рдЕрднреА рднреА рдЗрд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдХреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░реА рдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛? рдпрд╣ рдХрдм рддрдХ рд╣реИ рдФрд░ рдЕрднреА рднреА рдЗрд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

@ рдЭреЗ-рд╡рд╣

image

рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ!

рдХреНрдпрд╛ рдпрд╣ рдЕрдзрд┐рдХрд╛рд░реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ?рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдЧреИрд░-рдЬрд░реВрд░реА рдкреИрдХреЗрдЬ рд╡рд╛рдХрдИ рдХрд╛рдпрдо рд╣реИ

@DemoHu
image

@tibotiber рдЖрдЗрдХрди-рд▓реЛрдбрд░ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдЗрдХрди chunk рдЕрднреА рднреА index.html рдореЗрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ? index.html рд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реБрдЭрд╛рд╡ рдХреЛ рдХреИрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдП

@ jasan-s рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдк рдмрдВрдбрд▓реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдВ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд╡реАрдирддрдо рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдкрд░ рд╣реВрдВ, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдб рд╡рд┐рднрд╛рдЬрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдореБрдЦреНрдп рдмрдВрдбрд▓ рдХреЗ рдШрдЯрдХ рдкреЗрдбрд╝ рдореЗрдВ рдХрд╣реАрдВ рднреА import рдЖрдЗрдХрди рдирд╣реАрдВ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (рдореИрдВ рдХрднреА рднреА рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ) ред

@tobiaslins рд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдХрд╣рддрд╛ рд╣реИ Module not found: Error: Can't resolve '@ant-design/icons/lib/dist' in '/Users/fede/Projects/despe/deliveries/node_modules/antd/es/icon' рдХреЛрдИ рднреА рдореБрдЭреЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдзрдиреНрдпрд╡рд╛рдж

@marcosfede рдореИрдВ рдХрд╕реНрдЯрдорд╛рдЗрдЬреНрдб-рдХреНрд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд┐рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдП? рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ

./node_modules/antd/lib/icon/index.js
Cannot find module: '@ant-design/icons/lib/dist'. Make sure this package is installed.

You can install this package by running: yarn add @ant-design/icons/lib/dist.

@marcosfede рдУрд╣! рдореЗрд░реА рдЧрд▓рддреАред рдЕрдм рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ред

рдореБрдЭреЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ ЁЯТб @ afc163

рд╣рдо svg рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрд┐рдЫрд▓реЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

<Icon type='search' />

рддрдм рдмрд╛рдмреЗрд▓ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:

import _searchIcon from '@ant-design/icons/lib/dist/search.svg'
<Icon component={ _searchIcon } />

// цИЦшАЕчЫ┤цОеш╜мхМЦцИР
<Icon component={ require('@ant-design/icons/lib/dist/search.svg') } />

рдлрд┐рд░ рдЖрдк рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдЧрд░ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ рддреЛ рдмрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

import * as AllIcons from '@ant-design/icons/lib/dist'

<Icon component={ AllIcons[type] } />

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдШрдЯрдХ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ ЁЯТб @ afc163

рд╣рдо svg рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрд┐рдЫрд▓реЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

<Icon type='search' />

рддрдм рдмрд╛рдмреЗрд▓ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:

import _searchIcon from '@ant-design/icons/lib/dist/search.svg'
<Icon component={ _searchIcon } />

// цИЦшАЕчЫ┤цОеш╜мхМЦцИР
<Icon component={ require('@ant-design/icons/lib/dist/search.svg') } />

рдлрд┐рд░ рдЖрдк рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдЧрд░ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ рддреЛ рдмрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

import * as AllIcons from '@ant-design/icons/lib/dist'

<Icon component={ AllIcons[type] } />

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдШрдЯрдХ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд┐рдЪрд╛рд░ 4.0 рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдЪрдиреЗ рд╡рд╛рд▓реЗ рдмреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдЧрддрд┐рд╢реАрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореИрдВрдиреЗ рдХрд▓ рд░рд╛рдд рдЯрд┐рдкреНрдкрдгреА рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдПрдХ рдмрд╛рдмреЗрд▓ рдкреНрд▓рдЧ-рдЗрди рд▓рд┐рдЦрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ @wendzhue @ afc163

const template = require('@babel/template')

function genRequireEpx (name) {
  return template.expression(`require('@ant-design/icons/lib/dist/${name}.svg')`)()
}

module.exports = function ({ Plugin, types: t }) {
  return {
    visitor: {
      // <Icon type='search' />
      JSXElement({ node }, { opts: { patterns = [] } }) {
        const { name, attributes } = node.openingElement
        if (!(name && name.name === 'Icon') || !attributes || !attributes.length) {
          return
        }
        attributes.forEach(attr => {
          if (attr.name.name === 'type') {
            attr.name.name = 'component'
            attr.value = genRequireEpx(attr.value.value)
          }
        })
      },
      // React.createElement(Icon, { type: "search" }
      CallExpression({ node }, { opts: { patterns = [] } }) {
        const cal = node.callee
        const arg = node.arguments
        if (!(cal.object && cal.object.name === 'React' &&
            cal.property && cal.property.name === 'createElement' &&
            arg[0] && arg[0].name === 'Icon' &&
            arg[1] && arg[1].properties
          )) {
          return
        }
        arg[1].properties.forEach(obj => {
          if (obj.key.name === 'type') {
            obj.key.name = 'component'
            obj.value = genRequireEpx(obj.value.value)
          }
        })
      },
    }
  };
}

рдбрд╛рдЙрди-рдХрдирд╡рд░реНрдЬрд╝рди рдирд┐рдпрдореЛрдВ рдФрд░ рдХреИрд╕реНрдЯреНрд░реЗрд╢рди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреЛрдИ рдкреНрд░рдЧрддрд┐ ?

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЖрдЗрдХрди рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкреИрдХреЗрдЬреНрдб рд╕рдорд╛рдзрд╛рди рджреЗрдЦреЗрдВ, рдФрд░ рдЖрдЗрдХрди рдХреЛ рдЕрд▓рдЧ рд╕реЗ js рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд░реЗрдВ
https://github.com/Beven91/webpack-ant-icon-loader

@ARKKYN antd v4 рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ # 16911

рдЖрдк atd 4 рдХреЗ рдЕрд▓реНрдлрд╝рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрднреА рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ

https://github.com/ant-design/ant-design/releases/tag/4.0.0-alpha.2

рдкреЗрдбрд╝ рдХреЛ рдЭрдЯрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрди рдмрд╛рд╣рд░ рдЦреАрдВрдЪреЛред

рдХреНрдпрд╛ рдпрд╣ рдЕрдзрд┐рдХрд╛рд░реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ?рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдЧреИрд░-рдЬрд░реВрд░реА рдкреИрдХреЗрдЬ рд╡рд╛рдХрдИ рдХрд╛рдпрдо рд╣реИ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдЪреАрдЬрд╝ рдХрд╛ рд╡рд╣реА рд╕реНрд╡рд░ рд╣реИ рдЬреЛ afc163 рдиреЗ рдХреНрд░рд┐рд╕рдорд╕ рдкрд░ рдХрд┐рдпрд╛ рдерд╛ред рд╕рдмрдЯреЗрдХреНрд╕реНрдЯ рд╣реИ "рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ"

@ lizy0329 4.0.0-alpha.2 рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдКрд░реНрдЬрд╛ рдФрд░ рд╕рдордп рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рдЖрдк рдЬрд▓реНрджреА рдореЗрдВ рд╣реИрдВ, рддреЛ рдХрд╛рдВрдЯрд╛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ ...

@ lizy0329 https://github.com/ant-design/ant-design/pull/18217 рджреЗрдЦреЗрдВ

рдХреЛрдИ рд╢рд╛рдВрдд рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред

@ lizy0329 # 18217 рджреЗрдЦреЗрдВ

рдХреЛрдИ рд╢рд╛рдВрдд рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдЗрд╕ рдЪреАрдЬ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред HO- рд╣реЛ рдХреЗ рд╕рдорд╛рди рд╣реА рд╕рдорд╛рдирддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

@ lizy0329

ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ш╖Я afc163 хЬи ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ ф╕Ьше┐ тАЩтАЩ тАЩтАЩ тАЩтАЩ

рдлрд╝реЙрдиреНрдЯ рдХреЗ рдмрдЬрд╛рдп SVG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ?
рдЖрдЗрдХрди рдлрд╝реЙрдиреНрдЯ рдХреЗ рдмрдЬрд╛рдп рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдПрд╕рд╡реАрдЬреА рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХрдВрдкрдиреА рдиреЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ?
рдСрдХреНрдЯрд┐рдХреЙрди рдХреЛ рдПрд╕рд╡реАрдЬреА рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛

рдЕрдм рдХреНрдпрд╛ рджрд┐рдХреНрдХрдд рд╣реИ?
рдкрд┐рдЫрд▓рд╛ рдЖрдЗрдХрди рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╕реАрдбреАрдПрди рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдХрд╛рд░ рд╡рд┐рдХреНрд░реЗрддрд╛ рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реАрдбреАрдПрди рдирд╣реАрдВ рд╣реИ (рдЖрдк рдЕрднреА рднреА рд╕рднреА рдЖрдЗрдХрди рдХреЛ рдПрдХ рдЪрдВрдХ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реАрдбреАрдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) svg рдЖрдЗрдХрди рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ред
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдХрд┐ рдкреЗрдбрд╝ рдХреЛ рдХреИрд╕реЗ рд╣рд┐рд▓рд╛рдпрд╛ рдЬрд╛рдП, рдорд╛рдВрдЧ рдкрд░ рдЖрдЗрдХрди рдХреИрд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рд╣рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдЖрдЗрдХрди рдПрдХ рд╕рд╛рде рд▓реЛрдб рдХрд░реЗрдВ, рд╡рд╣рд╛рдБ (рд╕рдорд╕реНрдпрд╛ рдореЗрдВ) рдмрдЪрдиреЗ рдХреЗ рдХрдо рд╕реЗ рдХрдо рддреАрди рддрд░реАрдХреЗ рд╣реИрдВред

@ afc163
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 3.9 рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд▓реЙрдЧ рдмрд╣реБрдд рд╣реА рдЕрдорд┐рддреНрд░ рд╣реИред рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ рдХрд┐ рдПрд╕рд╡реАрдЬреА рдореЗрдВ рдХреНрдпреЛрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ред рдлрд╝реЙрдиреНрдЯ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рд▓рд╛рдн рдХреНрдпрд╛ рд╣реИ?

btw рдореИрдВ svg (рдЗрд╕ рддрд░рд╣, viewBox 1024 * 1024 рддрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рд╕рдордЧреНрд░ рдкрд░рдд рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдПрдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд╡реГрджреНрдзрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

@ afc163 рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрд╕рд╡реАрдЬреА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдЕрдзрд┐рдХрд╛рд░реА рдиреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ svg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ рдФрд░ рдорд╛рдВрдЧ рдкрд░ рдЖрдЗрдХрди рдХреИрд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХрдИ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рд╣реИред

@ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рдХреЗ рдкреНрд░рднрд╛рд╡ svg рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдкреНрд░рджрд░реНрд╢рди рдкрд░ svgхЕ╢хнРpath рдкрде рдбреНрд░рд╛рдЗрдВрдЧ рдЗрд╕реЗ рд╕рдордЭреЛред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдкрд░рдд рдСрдкрд░реЗрд╢рди рдХреА рд╡реГрджреНрдзрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдмрд╛рдж рд╡рд╛рд▓рд╛ рдмрдбрд╝рд╛ рд╕рд┐рд░ рд╣реИред
рдпрджрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ svg рдЖрдЗрдХрди (рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ) рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдПрдХ рдмрдбрд╝рд╛ рдЖрдЗрдХрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреНрд░рд╛рдЗрдВрдЧ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд╣рд╕рдВрдмрдВрдз рдЧреБрдгрд╛рдВрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╣реИред рдХреНрдпрд╛ рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдбрд┐рдЬрд╛рдЗрдирд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЖрдЗрдХрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдЕрдиреБрднрд╡ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЖрдЗрдХрди рдмрд╣реБрдд рд╡рд┐рдХреГрдд рдирд╣реАрдВ рд╣реИ), рдФрд░ рдкрде рд╕рдВрдкреАрдбрд╝рди рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдХреВрд▓рди рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЙрдЪреНрдЪ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрдкреЛрдЬрд╝рд┐рд╢рди рд▓реЗрдпрд░ рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ svg sprite рд╕реНрдХреАрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдкреЗрдЬ рдкрд░ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ (рд╣реЗрдбрд░ рдпрд╛ рдЕрдиреНрдп рдкрджреЛрдВ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП), рдЬреЛ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдЙрдЪреНрдЪ рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд┐рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд▓реЛрдЧ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдЗрдХрди рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ svg рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдпреЛрдЧреНрдп рд╣реИрдВ?

  • IE8 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд┐рддрд┐ рдЕрдЪреНрдЫреА рд░рд╣реА рд╣реИ
  • рдЬрдм рддрдХ рдЖрдЗрдХрди рдХреЛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ)
  • рдореЛрдиреЛрдХреНрд░реЛрдо рдЖрдЗрдХрди рд╣рдореЗрд╢рд╛ рдФрд░ рдЕрдм рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдиреБрд╡рд░реНрддреА рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрдореА, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╡реНрдпрдХреНрддрд┐ рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

@ lizy0329 рджреВрд╕рд░реЛрдВ рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдЕрдЯрдХрд▓ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХрд┐рддрдирд╛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реИ, рджреВрд╕рд░реЛрдВ рдХреЛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рдЬрдирд╕рдВрдкрд░реНрдХ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╕реНрд╡рд╛рдЧрдд рд╣реИ

@HeskeyBaozi
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЖрдЗрдХрди рднрд╛рдЧ рдХрд╛ рдореЗрд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдмрд╣реБрдд рдХрдо рдкреНрд░рджрд░реНрд╢рди рд╣реИред
image
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдУрдПрдХреНрд╕ рдкрд░ рдХреНрд░реЛрдо, рдЬрдм рдкреГрд╖реНрда рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрдирд╛рдЯ рдЖрдЗрдХрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реЛрдЧрд╛ред

рд╢рд╛рдпрдж babel-plugin-macros рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ lizy0329 рджреВрд╕рд░реЛрдВ рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдЕрдЯрдХрд▓ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХрд┐рддрдирд╛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реИ, рджреВрд╕рд░реЛрдВ рдХреЛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рдЬрдирд╕рдВрдкрд░реНрдХ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╕реНрд╡рд╛рдЧрдд рд╣реИ

рдпрд╣ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЕрдЯрдХрд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ "рд╕рд╛рдорд╛рдиреНрдпрддрд╛ рдХреА рдорд╛рдВрдЧ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред HO! HO рджреБрд░реНрдШрдЯрдирд╛ рд╕реЗ рдирд╣реАрдВ рд╣реБрдЖ, рдпрд╣ рдПрдХ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдмрджрдирд╛рдореА рдирд╣реАрдВ рд╣реБрдИ, рдореИрдВ рд╕рд┐рд░реНрдл рдмреЗрд╣рддрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП atd рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдбреЗрдЯ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдФрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВред

рддреЛ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ atd рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдмрдЯрди рдЖрдпрд╛рдд рдХрд┐рдпрд╛, рдФрд░ рдкреИрдХ рдХрд┐рдпрд╛ рд╣реБрдЖ рдмрдВрдбрд▓ 177k рд╕реЗ 1.1m рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ ... рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛ рдФрд░ рдпрд╣ рдЖрдЗрдХрди рднреА рдерд╛ред рдмрдбрд╝реЗ

рдЬрдм рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдмрдВрдбрд▓ рд╕реЗ рдЖрдЗрдХрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдореИрдВ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕ рддрд░рд╣:

fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: true,
}),

рдЖрдк рд▓реЛрдЧ antd@3 рд▓рд┐рдП @ qaiser110 рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред

рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ antd рд╕реНрд░реЛрдд рд╕рднреА рдЖрдЗрдХрди рдХрд╛ рдПрдХ resolve.alias рдХрд╛ рдЙрдкрдпреЛрдЧ @ant-design/icons/lib/dist рдХрд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдЗрдХрдиреЛрдВ рдХреЛ @ant-design/icons рд╕реЗ рдЪреЗрд░реА-рдкрд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдмрдбрд╝реЗ рдмрдВрдбрд▓ рд╣реЛрдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЖрдЗрдХрди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪреЗрд░реА-рдкрд┐рдХ рдХрд░рдирд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдЪреЗрд░реА-рдкрд┐рдХ рдХрд░реЗрдВрдЧреЗ (рдЬрдм рдЖрдЗрдХрди рдЧрд╛рдпрдм рд╣реИ)ред рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЪреЗрд░реА рдХреЛ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП antd рдФрд░ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ antd рд╕реНрд░реЛрдд рд╕реЗ рдЪреЗрд░реА-рдкрд┐рдХ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рдХреА рдПрдХ рд╕рд╛рдЭрд╛ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдкреИрдХреЗрдЬ рдерд╛ред рдЗрд╕ рддрд░рд╣, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдЪреЗрд░реА-рдкрд┐рдХрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреА рд╣реЛрдЧреАред рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ ред рд╣рдо рдЙрди рдЖрдЗрдХрди рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ antd рдШрдЯрдХ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ atd рд╕реНрд░реЛрдд рдХреЛ рдЪреЗрд░реА-рдкрд┐рдХ рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ export * from 'antd-cherry-pick-icons/icon' рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ antd рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@LucasBassetti , рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЖрдЗрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ? рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк <Icon /> рд╕реАрдзреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ antd рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, <Alert /> ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ atd 4.0 (рдЕрд▓реНрдлрд╛ рдореЗрдВ) рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЪреЗрд░реА рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ ред

рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (antd> = 3.9)

  1. рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = {
  //...
  resolve: {
    alias: {
      "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js")
    }
  }
};
  1. рдмрдирд╛рдПрдВ icons.js рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ src/ рдпрд╛ рдЬрд╣рд╛рдБ рднреА рдЖрдк рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ!
    рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рдПрдирдЯреАрдбреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП! рдореБрдЭреЗ рдХреЗрд╡рд▓ atd рдХреЗ рдЪреБрдирд┐рдВрджрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрди рдЖрдЗрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
export {
  default as DownOutline
} from "@ant-design/icons/lib/outline/DownOutline";

рдпрд╣ react-app-rewire (create-react-app рд╕рдВрд╢реЛрдзрдиреЛрдВ) рдХреЗ рд╕рд╛рде config-overwrites.js рд╕рд╛рде рднреА рд╕рдВрднрд╡ рд╣реИ

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рднреА config-overwrites.js

const { override, fixBabelImports, addWebpackAlias } = require('customize-cra');
const rewireCompressionPlugin = require('react-app-rewire-compression-plugin');
const rewireUglifyjs = require('react-app-rewire-uglifyjs');
const path = require('path');


module.exports = override(
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: 'css',
  }),
  addWebpackAlias({
    ['@ant-design/icons/lib/dist$']: path.resolve(__dirname, './src/client/icons.js')
  }),
  rewireUglifyjs,
  rewireCompressionPlugin
);

@adinnc рдЖрдЗрдХрди рдкрде рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реБрдЖ, рдЕрдм @ant-design/icons/lib/outline/DownOutline

рдорд╛рд░реНрдХ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдкреВрд░рд╛ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, antd 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдмрдЯрди рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╕ рдкрд▓ рдФрд░ рдЖрдЗрдХрди рд▓рд┐рдВрдХ рдХрд░реЗрдВред рдЕрдХреЗрд▓реЗ рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ 500k рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

@DemonCloud рдкрд▓ рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ https://github.com/ant-design/babel-plugin-import/issues/352 рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдРрдк-рдкреБрдирдГ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред

config-overrides.js

Const  path  =  require ( ' path ' );

/* config-overrides.js */
 module . exports  =  function  override ( config , env ) {
   let alias = ( config . resolve . alias  || {});
  Alias[ ' @ant-design/icons/lib/dist$ ' ] =  path . resolve ( __dirname , " ./src/icons.js " );

  Config . resolve . alias  = alias;

  Return config;
}

icons.js Gist

рдпрдХреАрди рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ icons.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдмрдВрдбрд▓ 600KB рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдХреЛрдб https://www.npmjs.com/package/html-webpack-inline-source-plugin рдореЗрдВ рдХрд░рдирд╛ рд╣реИ

рдореИрдВрдиреЗ config-override.js рдЬреИрд╕реЗ рд╕рдВрдкрд╛рджрди рдХрд░рдХреЗ рдЕрдкрдиреЗ рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ 500KB рдШрдЯрд╛ рджрд┐рдпрд╛:

config-override.js

const { override, fixBabelImports } = require('customize-cra');
const path = require('path');

module.exports = override(
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: 'css'
  }),
  // used to minimise bundle size by 500KB
  function(config, env) {
    const alias = config.resolve.alias || {};
    alias['@ant-design/icons/lib/dist$'] = path.resolve(__dirname, './src/icons.js');
    config.resolve.alias = alias;
    return config;
  }
);

./src/icons.js

/**
 * List all antd icons you want to use in your source code
 */
export {
  default as SearchOutline
} from '@ant-design/icons/lib/outline/SearchOutline';

export {
  default as CloseOutline
} from '@ant-design/icons/lib/outline/CloseOutline';

export {
  default as QuestionCircleOutline
} from '@ant-design/icons/lib/outline/QuestionCircleOutline';

export {
  default as PlayCircleOutline
} from '@ant-design/icons/lib/outline/PlayCircleOutline';

export {
  default as PauseCircleOutline
} from '@ant-design/icons/lib/outline/PauseCircleOutline';

export {
  default as LoadingOutline
} from '@ant-design/icons/lib/outline/LoadingOutline';

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ

Screen Shot 2019-11-05 at 2 56 54 pm

рдЙрдкрд░рд╛рдВрдд

Screen Shot 2019-11-05 at 2 56 48 pm

рдореИрдВрдиреЗ config-override.js рдЬреИрд╕реЗ рд╕рдВрдкрд╛рджрди рдХрд░рдХреЗ рдЕрдкрдиреЗ рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ 500KB рдШрдЯрд╛ рджрд┐рдпрд╛:

config-override.js

const { override, fixBabelImports } = require('customize-cra');
const path = require('path');

module.exports = override(
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: 'css'
  }),
  // used to minimise bundle size by 500KB
  function(config, env) {
    const alias = config.resolve.alias || {};
    alias['@ant-design/icons/lib/dist$'] = path.resolve(__dirname, './src/icons.js');
    config.resolve.alias = alias;
    return config;
  }
);

./src/icons.js

/**
 * List all antd icons you want to use in your source code
 */
export {
  default as SearchOutline
} from '@ant-design/icons/lib/outline/SearchOutline';

export {
  default as CloseOutline
} from '@ant-design/icons/lib/outline/CloseOutline';

export {
  default as QuestionCircleOutline
} from '@ant-design/icons/lib/outline/QuestionCircleOutline';

export {
  default as PlayCircleOutline
} from '@ant-design/icons/lib/outline/PlayCircleOutline';

export {
  default as PauseCircleOutline
} from '@ant-design/icons/lib/outline/PauseCircleOutline';

export {
  default as LoadingOutline
} from '@ant-design/icons/lib/outline/LoadingOutline';

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ

Screen Shot 2019-11-05 at 2 56 54 pm

рдЙрдкрд░рд╛рдВрдд

Screen Shot 2019-11-05 at 2 56 48 pm

рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдореЗрд░реА рдорджрдж рдХреА рд╣реИ!

@adinnc рдЖрдЗрдХрди рдкрде рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реБрдЖ, рдЕрдм @ant-design/icons/lib/outline/DownOutline

рдЕрд░реЗ, рдХреНрдпрд╛ рдЖрдк рдХреЛрдИ рдХрд╛рдо рдвреВрдВрдврдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ? рдореБрдЭреЗ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ

рдореИрдВ рдпрд╣рд╛рдБ рдЬреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рд╡рд╣рд╛рдБ рд╕реЗ рдХреЗрд╡рд▓ рдкреНрд░рд╕реНрддреБрддрд┐рдпрд╛рдБ рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдФрд░ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдШрдЯрдХ рд╕рд┐рд░реНрдл рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЪрд┐рд╣реНрди рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ? рдпрд╣ рдореВрд▓ рдХрд╛рд░рдг рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдпрд╛рдд рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдЧрд╛?

@Nomeasmo , рд░реЛрдбрдореИрдк рдХреЗ рдЕрдиреБрд╕рд╛рд░ v4 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

3.X рдареАрдХ рдерд╛, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ 4 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдореЗрд░реА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред

рдХрд┐рд╕реА рджрд┐рди рдЪреАрдВрдЯреА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╢рд╛ рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдмрдЯрди рдЬреИрд╕реА рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП CSS рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХреНрд╕реЗрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреИрдЪ рдЕрдкрдбреЗрдЯ рднреА рд▓рдЧрднрдЧ 1,000 рдХрдорд┐рдЯреНрд╕ рд╕реЗ рднрд░реЗ рд╣реБрдП рд╣реИрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдордВрдерди рд╣реИред

рдирд┐рд╢рд╛рди

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдРрдк-рдкреБрдирдГ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред

config-overrides.js

const  path  =  require ( ' path ' );

/ * config-overrides.js * /
 module . exports  =  function  override ( config , env ) {
   let alias = ( config . resolve . alias  || (});
  alias [ ' @ ant-design / icons / lib / dist $ ' ] =  path . resolve ( __dirname , " ./src/icons.js " );

  config . resolve . alias  = alias;

  return config;
}

icons.js рдЧрд┐рд╕реНрдЯ

рдХреНрдпрд╛ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдЕрднреА рднреА рдЙрдЪреНрдЪ рдирд╣реАрдВ рд╣реИ
image

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд┐рд▓рд╛рддреЗ рд╣реБрдП рдкреЗрдбрд╝ v4.0.0-beta.0 рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЖрдЗрдХрди рдмрдВрдбрд▓ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рд┐рдХреЛрдбрд╝ рд▓рд┐рдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ v4.0.0-beta.1 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ @ant-design/compatible рдкреИрдХреЗрдЬ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рд╕рднреА рдЖрдЗрдХрди рдЕрднреА рднреА рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдРрдк-рдкреБрдирдГ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред
config-overrides.js

const  path  =  require ( ' path ' );

/ * config-overrides.js * /
 module . exports  =  function  override ( config , env ) {
   let alias = ( config . resolve . alias  || (});
  alias [ ' @ ant-design / icons / lib / dist $ ' ] =  path . resolve ( __dirname , " ./src/icons.js " );

  config . resolve . alias  = alias;

  return config;
}

icons.js рдЧрд┐рд╕реНрдЯ

рдХреНрдпрд╛ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдЕрднреА рднреА рдЙрдЪреНрдЪ рдирд╣реАрдВ рд╣реИ
image

https://github.com/ant-design/ant-design/issues/12011#issuecomment -552117531 рдЬреИрд╕реЗ рдЖрдкрдХреЛ рдХреМрди рд╕реЗ рдЪрд┐рд╣реНрди рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ icons.js рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (antd> = 3.9)

  1. рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = {
  //...
  resolve: {
    alias: {
      "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js")
    }
  }
};
  1. рдмрдирд╛рдПрдВ icons.js рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ src/ рдпрд╛ рдЬрд╣рд╛рдБ рднреА рдЖрдк рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ!
    рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рдПрдирдЯреАрдбреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП! рдореБрдЭреЗ рдХреЗрд╡рд▓ atd рдХреЗ рдЪреБрдирд┐рдВрджрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрди рдЖрдЗрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
export {
  default as DownOutline
} from "@ant-design/icons/lib/outline/DownOutline";

рдпрд╣ react-app-rewire (create-react-app рд╕рдВрд╢реЛрдзрдиреЛрдВ) рдХреЗ рд╕рд╛рде config-overwrites.js рд╕рд╛рде рднреА рд╕рдВрднрд╡ рд╣реИ

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рднреА config-overwrites.js

const { override, fixBabelImports, addWebpackAlias } = require('customize-cra');
const rewireCompressionPlugin = require('react-app-rewire-compression-plugin');
const rewireUglifyjs = require('react-app-rewire-uglifyjs');
const path = require('path');


module.exports = override(
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: 'css',
  }),
  addWebpackAlias({
    ['@ant-design/icons/lib/dist$']: path.resolve(__dirname, './src/client/icons.js')
  }),
  rewireUglifyjs,
  rewireCompressionPlugin
);

рдореЗрд░реЗ рдмрдВрдбрд▓ рдХреЛ 700kb рд╕реЗ 200kb рддрдХ рдШрдЯрд╛ рджрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд┐рд▓рд╛рддреЗ рд╣реБрдП рдкреЗрдбрд╝ v4.0.0-beta.0 рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЖрдЗрдХрди рдмрдВрдбрд▓ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рд┐рдХреЛрдбрд╝ рд▓рд┐рдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ v4.0.0-beta.1 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ @ant-design/compatible рдкреИрдХреЗрдЬ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рд╕рднреА рдЖрдЗрдХрди рдЕрднреА рднреА рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдореЗрд░реЗ рдЕрджреНрдпрддрди рдЖрдЗрдХрди рдЖрдпрд╛рдд рдХреЗ рдмрд╛рд╡рдЬреВрдж 4.0.0-rc.0 рдореЗрдВ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ

@ рдЭреЙрдХреЗрдЯ рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА! рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореЗрд░реЗ рдХреБрдЫ рдЖрдпрд╛рдд рдкреЗрдбрд╝ рд▓рдЧрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЛрдбрд╝ рд░рд╣реЗ рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: _ anport рдкрд╛рда 'antd / lib / рдЯрд╛рдЗрдкреЛрдЧреНрд░рд╛рдлреА / рдкрд╛рда' рд╕реЗ; _
рдореИрдВрдиреЗ рдЗрд╕реЗ 'antd' рд╕реЗ _import {рдЯрд╛рдЗрдкреЛрдЧреНрд░рд╛рдлреА} рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛; _, рдФрд░ рдЖрдЗрдХрди рдиреЗ рдореЗрд░рд╛ рдмрдВрдбрд▓ рдЫреЛрдбрд╝ рджрд┐рдпрд╛!

@ рдЭреЙрдХреЗрдЯ рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА! рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореЗрд░реЗ рдХреБрдЫ рдЖрдпрд╛рдд рдкреЗрдбрд╝ рд▓рдЧрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЛрдбрд╝ рд░рд╣реЗ рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: _ anport рдкрд╛рда 'antd / lib / рдЯрд╛рдЗрдкреЛрдЧреНрд░рд╛рдлреА / рдкрд╛рда' рд╕реЗ; _
рдореИрдВрдиреЗ рдЗрд╕реЗ 'antd' рд╕реЗ _import {рдЯрд╛рдЗрдкреЛрдЧреНрд░рд╛рдлреА} рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛; _, рдФрд░ рдЖрдЗрдХрди рдиреЗ рдореЗрд░рд╛ рдмрдВрдбрд▓ рдЫреЛрдбрд╝ рджрд┐рдпрд╛!

рдореЗрд░реЗ рд╕рднреА рдЪреАрдВрдЯреА рдбрд┐рдЬрд╝рд╛рдЗрди рдЖрдпрд╛рдд рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: _import {рдЯрд╛рдЗрдкреЛрдЧреНрд░рд╛рдлреА} 'antd' рд╕реЗ; _
рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ!

рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (antd> = 3.9)

  1. рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = {
  //...
  resolve: {
    alias: {
      "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js")
    }
  }
};
  1. рдмрдирд╛рдПрдВ icons.js рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ src/ рдпрд╛ рдЬрд╣рд╛рдБ рднреА рдЖрдк рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ!
    рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рдПрдирдЯреАрдбреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП! рдореБрдЭреЗ рдХреЗрд╡рд▓ atd рдХреЗ рдЪреБрдирд┐рдВрджрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрди рдЖрдЗрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
export {
  default as DownOutline
} from "@ant-design/icons/lib/outline/DownOutline";

рдпрд╣ react-app-rewire (create-react-app рд╕рдВрд╢реЛрдзрдиреЛрдВ) рдХреЗ рд╕рд╛рде config-overwrites.js рд╕рд╛рде рднреА рд╕рдВрднрд╡ рд╣реИ

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рднреА config-overwrites.js

const { override, fixBabelImports, addWebpackAlias } = require('customize-cra');
const rewireCompressionPlugin = require('react-app-rewire-compression-plugin');
const rewireUglifyjs = require('react-app-rewire-uglifyjs');
const path = require('path');


module.exports = override(
  fixBabelImports('import', {
    libraryName: 'antd',
    libraryDirectory: 'es',
    style: 'css',
  }),
  addWebpackAlias({
    ['@ant-design/icons/lib/dist$']: path.resolve(__dirname, './src/client/icons.js')
  }),
  rewireUglifyjs,
  rewireCompressionPlugin
);

рдореЗрд░реЗ рдмрдВрдбрд▓ рдХреЛ 700kb рд╕реЗ 200kb рддрдХ рдШрдЯрд╛ рджрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж

рдЬрдм рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
image

Parcel.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:

npm install purched-antd-icons

рдФрд░ package.json :

  "alias": {
    "@ant-design/icons": "purched-antd-icons"
  }

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд┐рд▓рд╛рддреЗ рд╣реБрдП рдкреЗрдбрд╝ v4.0.0-beta.0 рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЖрдЗрдХрди рдмрдВрдбрд▓ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рд┐рдХреЛрдбрд╝ рд▓рд┐рдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ v4.0.0-beta.1 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ @ant-design/compatible рдкреИрдХреЗрдЬ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рд╕рднреА рдЖрдЗрдХрди рдЕрднреА рднреА рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдореИрдВ рдХреА config рдмрджрд▓рдХрд░ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА babel-plugin-import рдЗрд╕ рддрд░рд╣ ред

  {
    "libraryName": "antd",
+   "libraryDirectory": "es",
    "style": true
  },

Https://github.com/ant-design/ant-design/issues/12011#issuecomment -552117531 рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ antd@4 (https://github.com/ant-design-ant) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рд╡рд╛рдпрд╛ред -design / рдореБрджреНрджреЛрдВ / 20,661)ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд resolve.alias рдХреЛ рдЕрдкрдиреЗ webpack рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ ( customize-cra рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП):

// [...]
config.resolve.alias = {
    "@ant-design/icons$": resolve(__dirname, "path/to/your/src/icons.tsx")
};
// [...]

рдЖрдкрдХрд╛ icons.tsx рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

/**
 * Provide all needed icons from antd. This file is associated to the webpack.config.js resolve.alias.
 */

export { default as LoadingOutlined } from "@ant-design/icons/LoadingOutlined";

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд LoadingOutlined рдЖрдЗрдХрди Button рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЖрдЗрдХрди рдЬреЛрдбрд╝реЗрдВред рдФрд░ рдЖрдк рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреБрдирдГ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк @ant-design/icons рд╕реЗ рд╕реАрдзреЗ рдЖрдпрд╛рдд рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

import { LoadingOutlined } from "./icons";
import { LoadingOutlined } from "@ant-design/icons";

@ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реБрдЭрд╛рд╡ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ icons.tsx рдореЗрдВ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдореЗрд░реЗ рдкрд╛рд╕ рдлрд╛рд░реНрдо рддрддреНрд╡ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЗрдирдкреБрдЯрдирдВрдмрд░ рдФрд░ рд╕реЗрд▓реЗрдХреНрдЯ рдбреНрд░реЙрдкрдбрд╛рдЙрдиред рдХреЛрдИ рд╕рдВрдХреЗрдд рдХреГрдкрдпрд╛?

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ icons.tsx рдореЗрдВ рдХреМрди рд╕реЗ рдЖрдЗрдХрди рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдореЗрд░реЗ рдкрд╛рд╕ рдлрд╛рд░реНрдо рддрддреНрд╡ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдЗрдирдкреБрдЯрдирдВрдмрд░ рдФрд░ рд╕реЗрд▓реЗрдХреНрдЯ рдбреНрд░реЙрдкрдбрд╛рдЙрдиред рдХреЛрдИ рд╕рдВрдХреЗрдд рдХреГрдкрдпрд╛?

@ pradeepb6 рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк antd рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдореЗрдВ рдПрдХ рдирдпрд╛ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗрдмрдкреИрдХ рдЖрдЗрдХрди рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдПрдХ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХрднреА рднреА рдЕрдкрдиреЗ icons.tsx рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗрдЧреА:

image

рдмрд╛рдж рдореЗрдВ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ icons.tsx рдореЗрдВ рдХрд┐рди рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдШрдЯрдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред ЁЯЩВ

@matzeeable рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рд╡реЛ рдХреЛрд╢рд┐рд╢ рдХреАред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓рддреА рд╣реИрдВред рдпрд╣рд╛рдВ рдХреЛрдб рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

image

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА babel-plugin-import github рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХрд┐рд╕реА рдХреЛ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЗ рдпрд╣рд╛рдБ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереАред рдореИрдВрдиреЗ V4 рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдмрдбрд╝реЗ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЬрдм рдореИрдВрдиреЗ https://github.com/ant-design/ant-design/issues/12011#issuecomment -577513378 рдореЗрдВ "libraryDirectory": "es" рдЬреЛрдбрд╝рд╛, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ:

[ error ] /home/maciek/Dokumenty/websites/bookingapp/frontend/node_modules/antd/es/notification/index.js:3
import * as React from 'react';
       ^

SyntaxError: Unexpected token *
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.antd/es/notification (/home/maciek/Dokumenty/websites/bookingapp/frontend/.next/server/static/development/pages/_app.js:10975:18)
    at __webpack_require__ (/home/maciek/Dokumenty/websites/bookingapp/frontend/.next/server/static/development/pages/_app.js:23:31)
    at Module../lib/withData.js (/home/maciek/Dokumenty/websites/bookingapp/frontend/.next/server/static/development/pages/_app.js:8200:78)
    at __webpack_require__ (/home/maciek/Dokumenty/websites/bookingapp/frontend/.next/server/static/development/pages/_app.js:23:31)
    at Module../pages/_app.js (/home/maciek/Dokumenty/websites/bookingapp/frontend/.next/server/static/development/pages/_app.js:10614:71)
    at __webpack_require__ (/home/maciek/Dokumenty/websites/bookingapp/frontend/.next/server/static/development/pages/_app.js:23:31)
    at Object.0 (/home/maciek/Dokumenty/websites/bookingapp/frontend/.next/server/static/development/pages/_app.js:10754:18)
    at __webpack_require__ (/home/maciek/Dokumenty/websites/bookingapp/frontend/.next/server/static/development/pages/_app.js:23:31)
    at 

рдореИрдВ next.js btw рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред deps:

    "@ant-design/compatible": "0.0.1-rc.1",
    "@ant-design/icons": "^4.0.0-rc.0",
    "antd": "^4.0.0-rc.3",
    "babel-plugin-import": "^1.13.0",

рдХрд┐рд╕реА рдХреЛ?

@ afc163 рдиреЗ рдЗрдирд╛рдо рджрд┐рдпрд╛ рд╣реИ ред рдЗрд╕реЗ рдЬрд╛рд░реА рдХрд░реЗрдВ рдореБрджреНрджреЗ рдкрд░ рджреЗрдЦреЗрдВ

  • : рдордиреАрдмреИрдЧ: рдХреБрд▓ рдЬрдорд╛: $ 203.00
  • : рдЯрд╛рдбрд╛: рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдЗрдирд╛рдо (20%): $ 40.60
  • : рд░рд┐рдВрдЪ: рд╕реЗрд╡рд╛ рд╢реБрд▓реНрдХ (10%): $ 20.30

рдореБрдЭреЗ @ рдХреЗрдорд┐рдпреЛрдХреЗрд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдФрд░ [email protected] + next.js рд╡рд░реНрддрдорд╛рди рдореЗрдВ esm рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

yarn add esm
"scripts": {
    "dev": "NODE_OPTIONS=\"-r esm\" next",
    "build": "NODE_OPTIONS=\"-r esm\" next build",
    "start": "NODE_OPTIONS=\"-r esm\" next start"
}

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ :)

@ рдореИрдВ- tengfei рд╡рд╛рд╣, рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ! рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

Atd @ 4 рдХреЗ рд▓рд┐рдП рдЕрдм рд╣рдо рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ @ рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди / рдЖрдЗрдХрдиреНрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ atd рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдлреЙрдиреНрдЯрд╡реЙрдЪ рдЖрдЗрдХрдиреЛрдВ рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдХреЗрд╡рд▓ рдЖрдЗрдХрдиреЛрдВ atd рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЯреНрд░реАрд╢реЗрдХрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреВрд░реЗ рдбрд┐рдЬрд╛рдЗрди / рдЖрдЗрдХрди рдкреИрдХреЗрдЬ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

https://github.com/DavidSichau/antd-fa-icons

рдХреГрдкрдпрд╛ [email protected] рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред

https://github.com/ant-design/ant-design/issues/20661

Parcel.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:

npm install purched-antd-icons

рдФрд░ package.json :

  "alias": {
    "@ant-design/icons": "purched-antd-icons"
  }

рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

@ afc163 @yesmeck рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдЗрдХрди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдХреИрд╕реЗ рд╕рд╛рдордиреЗ рдХрд╛ рдЕрдВрдд AppstoreOutlined , рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред

const iconStr = res.icon // цЬНхКбхЩиш┐ФхЫЮчЪДцХ░цНохБЗхжВ
const Icon = React.lazy(() => import(`@ant-design/icons/${iconStr}`))

// render
<Icon />

рд▓реЗрдХрд┐рди рдЕрдм рд╕реАрдзреЗ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИредрдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ

@ afc163

рдХреГрдкрдпрд╛ [email protected] рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред

20,661

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рднреА рдЖрдЗрдХрди рдмрдВрдбрд▓ рд╣реИ:
рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╕рднреА рдЖрдЗрдХрди рд╣реИрдВред
рдореИрдВ "@ рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди / рдЖрдЗрдХрди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдпрд╣ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реИ

 {
    "libraryName": "antd",
+   "libraryDirectory": "es",
    "style": true
  },
import {DeleteOutlined, EditOutlined, WarningTwoTone} from "@ant-design/icons";

image

@ afc163 @yesmeck рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдЗрдХрди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдХреИрд╕реЗ рд╕рд╛рдордиреЗ рдХрд╛ рдЕрдВрдд AppstoreOutlined , рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред

const iconStr = res.icon // цЬНхКбхЩиш┐ФхЫЮчЪДцХ░цНохБЗхжВ
const Icon = React.lazy(() => import(`@ant-design/icons/${iconStr}`))

// render
<Icon />

рд▓реЗрдХрд┐рди рдЕрдм рд╕реАрдзреЗ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИредрдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП {рдЪрд┐рд╣реНрди} рдореЗрдВ рдмрджрд▓реЗрдВред
рдпрджрд┐ рдЖрдк рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд╛рд░рдг рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЖрдВрдХ рд╕рдХрддреЗ рд╣реИрдВред

babel-plugin-import рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдЭреЗ 500kb + рд╕реЗ рдиреАрдЪреЗ рдХрд╛ рдЖрдХрд╛рд░ рдорд┐рд▓рд╛

['import', { 
  libraryName: '@ant-design/icons', 
  libraryDirectory: '', // defaults to 'lib'
  camel2DashComponentName: false  // defaults to true
}]

Screen Shot 2020-05-02 at 10 11 58 PM

import {
  DesktopOutlined,
  FileOutlined,
  PieChartOutlined,
  TeamOutlined,
  UserOutlined,
} from '@ant-design/icons'

@thangbn

  [
       "import",
       {
         "libraryName": "@ant-design/icons",
         "libraryDirectory": "es/icons",
         "camel2DashComponentName": false
      },
       "@ant-design/icons"

  ],

@ mit123suki @nwoeddie рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХреЛрдИ рдХрд┐рд╕реНрдордд рдирд╣реАрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдЧрд▓рдд рдорд┐рд▓рд╛ред рдореЗрд░рд╛ рдкреВрд░рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдиреАрдЪреЗ рд╣реИ:

const webpack = require("webpack");
const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
const CopyWebpackPlugin = require("copy-webpack-plugin");
const ProgressBarPlugin = require("progress-bar-webpack-plugin");
const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");
var LodashModuleReplacementPlugin = require("lodash-webpack-plugin");
const AntdDayjsWebpackPlugin = require("antd-dayjs-webpack-plugin");
const path = require("path");

let dev = {
  mode: "development",
  optimization: {
    usedExports: true,
    noEmitOnErrors: true
  },
  entry: [
    path.resolve(__dirname, "./src/index.tsx")
  ],
  output: {
    path: path.resolve(__dirname, "./public"),
    publicPath: "/",
    filename: "[name].js"
  },
  target: "web",
  devServer: {
    // writeToDisk: true,
    historyApiFallback: true, // catch all 404
    port: 8080,
    hot: true,
    proxy: {
      "/backend": {
        target: "http://localhost:4000",
        pathRewrite: { "^/backend": "" }
      },
      "/runner": {
        target: "http://localhost:4001",
        pathRewrite: { "^/runner": "" }
      }
    }
  },
  devtool: "cheap-module-eval-source-map",
  resolve: {
    alias: {
      "react-dom": "@hot-loader/react-dom"
    },
    extensions: [".js", ".jsx", ".less", ".tsx", ".ts"]
  },
  plugins: [
    new LodashModuleReplacementPlugin(),
    new AntdDayjsWebpackPlugin(),
    new CopyWebpackPlugin([{ from: path.join(__dirname, "./static"), to: "./" }]),
    new ProgressBarPlugin(),
    new ForkTsCheckerWebpackPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.DefinePlugin({
      "process.env.ENV": JSON.stringify("dev"),
    }),
    new BundleAnalyzerPlugin({
      "openAnalyzer": true,
      analyzerPort: 8889
    })
  ],
  module: {
    rules: [
      {
        test: /\.(tsx|ts)$/,
        use: [
          {
            loader: "ts-loader",
            options: {
              transpileOnly: true
            }
          }
        ],
        exclude: /node_modules/
      }
      , {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: {
            "presets": [
              [
                "@babel/preset-env",
                {
                  "targets": "defaults",
                  "modules": false
                }
              ],
              [
                "@babel/preset-react"
              ]
            ],
            plugins: [
              "@babel/plugin-transform-runtime",
              ["import",
                { "libraryName": "antd", "style": false, "libraryDirectory": "es" }, "antd"],
              ["import",
                {
                  "libraryName": "@ant-design/icons",
                  // "style": false,
                  "libraryDirectory": "es/icons",
                  "camel2DashComponentName": false
                }, "@ant-design/icons"],
              "react-hot-loader/babel"
            ]
          }
        }
      },
      {
        test: /\.less$/,
        use: [
          {
            loader: "style-loader"
          },
          {
            loader: "css-loader",
            options: {
              sourceMap: true
            }
          },
          {
            loader: "less-loader",
            options: {
              sourceMap: true,
              javascriptEnabled: true
            }
          }]
      },
      {
        test: /\.(png|jpg|gif|svg|ico)$/,
        use: [
          {
            loader: "file-loader"
          }
        ]
      },
      {
        test: /\.css$/,
        use: [
          "style-loader",
          "css-loader"
        ]
      }
    ]
  },

};

module.exports = dev;

@ afc163 @yesmeck рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдЗрдХрди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдХреИрд╕реЗ рд╕рд╛рдордиреЗ рдХрд╛ рдЕрдВрдд AppstoreOutlined , рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред

const iconStr = res.icon // цЬНхКбхЩиш┐ФхЫЮчЪДцХ░цНохБЗхжВ
const Icon = React.lazy(() => import(`@ant-design/icons/${iconStr}`))

// render
<Icon />

рд▓реЗрдХрд┐рди рдЕрдм рд╕реАрдзреЗ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИредрдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрджрд▓рдХрд░ {рдЖрдЗрдХрди} рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд╛рд░рдг рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЖрдВрдХ рд╕рдХрддреЗ рд╣реИрдВред

Failed to compile.

./node_modules/@ant-design/icons/dist/icons/index.d.ts
Module not found: Can't resolve './AccountBookFilled' in '/Users/andy/Projects/shop-platform/node_modules/@ant-design/icons/dist/icons'

@Xezzon рд╕реАрдзреЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдЖрдЗрдХрди рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдореИрдВрдиреЗ рдмреИрдмрд▓-рдкреНрд▓рдЧрдЗрди-рдЖрдпрд╛рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@nwoeddie

  [
       "import",
       [
         { libraryName: 'antd', style: true },
         {
         "libraryName": "@ant-design/icons",
         "libraryDirectory": "es/icons",
         "camel2DashComponentName": false
      }] 
  ],

"рдмреИрдмрд▓-рд▓реЛрдбрд░": "^ 7.1.5"
"рдмреЗрдмрд▓-рдкреНрд▓рдЧрдЗрди-рдЖрдпрд╛рдд": "^ 1.13.0"

рдирдорд╕реНрддреЗ, nwoeddie ~!, рдореЗрд░реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдПрдХрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рд╡рд┐рдХрд▓реНрдк рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЕрдкреНрд░рдпреБрдХреНрдд рд╣реИ; рдХреНрдпрд╛ рдореИрдВ рдпреВ рдХреЛ рдкреВрд░рд╛ рдХреЙрдиреНрдлрд┐рдЧ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реВрдВ

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рд╕рдХрддреА рд╣реИ: https://www.cnblogs.com/fulu/p/13255538.html

@nwoeddie

  [
       "import",
       [
         { libraryName: 'antd', style: true },
         {
         "libraryName": "@ant-design/icons",
         "libraryDirectory": "es/icons",
         "camel2DashComponentName": false
      }] 
  ],

"рдмреИрдмрд▓-рд▓реЛрдбрд░": "^ 7.1.5"
"рдмреЗрдмрд▓-рдкреНрд▓рдЧрдЗрди-рдЖрдпрд╛рдд": "^ 1.13.0"

рдирдорд╕реНрддреЗ, nwoeddie ~!, рдореЗрд░реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдПрдХрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рд╡рд┐рдХрд▓реНрдк рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЕрдкреНрд░рдпреБрдХреНрдд рд╣реИ; рдХреНрдпрд╛ рдореИрдВ рдпреВ рдХреЛ рдкреВрд░рд╛ рдХреЙрдиреНрдлрд┐рдЧ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реВрдВ

рдпрд╣ рдмрд╛рдмреЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИред рдЖрдпрд╛рдд рдкреНрд▓рдЧрдЗрди рдПрдХ рд╕рд░рдгреА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рд╣реА рддрд░реАрдХрд╛:

    ["import", { "libraryName": "antd", "libraryDirectory": "es", "style": true}, "ant"],
    ["import", {
      "libraryName": "@ant-design/icons",
      "libraryDirectory": "es/icons",
      "camel2DashComponentName": false
    }, "ant-design-icons"],
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

taikongfeizhu picture taikongfeizhu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mineralres picture mineralres  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zhangchen2397 picture zhangchen2397  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

longzb picture longzb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kevyu picture kevyu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ