3.9.0
webpack4
https://zlab.github.io/report.html
рд╡реЗрдмрдкреИрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдЖрдЗрдХрди цЙУхМЕ цЙУхМЕ, рдЬреЗрдПрд╕ цЙУхМЕ цЙУхМЕ
цЙУхМЕ хИ░ рд╣рд┐рд╕реНрд╕рд╛-рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ щЗМхО╗ ф║Ж
рдЗрд╢реНрдпреВрд╣рдВрдЯ рд╕рд╛рд░рд╛рдВрд╢
рдЗрд╢реНрдпреВрд╣рдВрдЯ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдпреЛрдЬрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рд╛рдпреЛрдЬрдХ рдмрдиреЗрдВ
рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрд╡рд╛рдж:
3.9.0
Webpack4
https://zlab.github.io/report.html
рд╡реЗрдмрдкреИрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЖрдЗрдХрди рдкреИрдХ, рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рднрд╛рдЬрди
рдардЧ-рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдореЗрдВ рдкреИрдХ
<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
рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд┐рд▓реНрдЯ-рдЗрди рдШрдЯрдХ рдЬреЛ
<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 рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рдЖрдк рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдкрд╣рд▓реЗ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП dll рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:)
рдореЗрд░реЗ рд░реЗрдкреЛ рдХреА antd- рдмреНрд░рд╛рдВрдЪ (рд╡реЗрдмрдкреИрдХ 4 + рдмреИрдмрд▓ 7.0)
рдпрд╣ рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдВрдбрд▓ рдореЗрдВ Button
рд╣реИ (рд╢рд╛рдпрдж рдЬрдм рд╕реЗ рдпрд╣ рдорд╛рдЙрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ)ред рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрджрд┐ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдпрд╣ Button
?
(рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ - рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд┐рд░реНрдл Button
рдШрдЯрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреАрдХ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмрдВрдбрд▓ рдХреЛ рдЙрдбрд╝рд╛рддреЗ рд╣реИрдВ)
рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (antd> = 3.9)
module.exports = {
//...
resolve: {
alias: {
"@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js")
}
}
};
icons.js
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ src/
рдпрд╛ рдЬрд╣рд╛рдБ рднреА рдЖрдк рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЙрдкрдирд╛рдо рдорд╛рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ!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" />
рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
рдирдорд╕реНрддреЗ,
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг <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 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдЗрдХрди рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдПрдХ рдЗрдЬреЗрдХреНрдЯреЗрдб рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдмрдВрдбрд▓ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рд╣реИред
рд╡реЗрдмрдкреИрдХ рдЖрдЙрдЯрдкреБрдЯ
рдмрдВрдбрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдЖрдк рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдкрд╣рд▓реЗ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП dll рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@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
рдШрдЯрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
рдореЗрд░реА рдмрд╛рдд рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ 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
рдмрдВрдбрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
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 рдорд╣реАрдиреЗ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░реА рдХреЛ рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ рд╣реИ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рдЪрдп рд╡рд┐рдзрд┐ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛, рд╕рд╛рдордЧреНрд░реА рдХреА рддрд░рд╣, рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ред рдЕрдм рдХреЗрд╡рд▓ рд╡реЗ рдШрдЯрдХ рдЬреЛ рдмрд┐рд▓реНрдЯ-рдЗрди рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рдЪрд┐рд╣реНрди рдкреИрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВред ред
рдпрджрд┐ 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')
);
@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',
},
рд╣реИрд╢: рд╕рдЪ,
})
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдЖрдЗрдХрди рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЖрдЗрдХрди рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛, рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдорд╛рдЙрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдФрд░ рдЖрдЗрдХрди рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рддрднреА рд▓реЛрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдЬрдм рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдХреЗ рдЖрдЗрдХрди рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ; рдЗрд╕реА рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреИрдХреЗрдЬреНрдб рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд▓рдЧрднрдЧ 50K рдХреА рдЖрдЗрдХрди рд╕реВрдЪреА рдбреЗрдЯрд╛ рд╣реИ ( Icon.jsx
рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдЬрд╛рджреВ рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдирд╛рдо рдирд╛рдорд┐рдд рдХрд░рдирд╛) рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдЖрдЗрдХрди рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЕрдиреБрдкрд▓рдмреНрдз рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдорд╛рдЙрд╕ рдХреЛ рд▓рд╛рдкрддрд╛ рдЖрдЗрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдЗрдХрди рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрдХрди рд▓реЛрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдкреИрдХреЗрдЬреНрдб рдЗрдВрдбреЗрдХреНрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЖрдЗрдХрди рд╕реВрдЪреА рдбреЗрдЯрд╛ рдХрд╛ рд▓рдЧрднрдЧ 50K рд╣реИ ( Icon.jsx
рдореЗрдВ рд╡реЗрдмрдкреИрдХ рдЬрд╛рджреВ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛) рдЗрд╕ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред
рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдХрди рдореЗрдВ рдЖрдЗрдХрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реЗрдмрдкреИрдХ рдореЙрдбреНрдпреВрд▓ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдЗрдХрди рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЖрдХрд╛рд░ рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреИрдХ рдХреА рдЧрдИ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ 50K рдЖрдЗрдХрди рд╕реВрдЪреА рдбреЗрдЯрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 3M рдХреЗ рдХрд░реАрдм рдЖрдХрд╛рд░ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рдпрд╛ рдПрдХ рджрд░реНрдЬрди рдЖрдЗрдХрди рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдмрд╣реБрдд рдмрдбрд╝реА рдирд╣реАрдВ рд╣реЛрдЧреА, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЕрдзрд┐рдХ, рдЗрд╕рдХрд╛ рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдкрд░ рдмрд╣реБрдд рдХрдо рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдХрди рдореЗрдВ рдЖрдЗрдХрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡реЗрдмрдкреИрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ icons
рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЖрдХрд╛рд░ рдкрд╣рд▓реЗ рдкреИрдХ рдХреА рдЧрдИ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЗрдХрди рд╕реВрдЪреА рдбреЗрдЯрд╛ рдХрд╛ 50K, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреИрдХреЗрдЬреНрдб рдЖрдХрд╛рд░ 3M рдХреЗ рдХрд░реАрдм рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рди рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдпрд╛ рдПрдХ рджрд░реНрдЬрди рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдмрд╣реБрдд рдмрдбрд╝реА рдирд╣реАрдВ рд╣реИред , рдФрд░ рдЪреВрдБрдХрд┐ рдпрд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдХрд┐рд╕реА рдПрдХ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдорд╛рдЙрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдкрд░ рдкреНрд░рднрд╛рд╡ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред
@ jinliming2 рдПрдХ рд╢рд╛рдВрдд рд╕рдВрд╢реЛрдзрди рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗрдмрдкреИрдХ рдЖрдпрд╛рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд░ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ, рдЬреИрд╕реЗ рдХрд┐ рдЖрдпрд╛рдд (рдлреВ), рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдХреЗрд╢рди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ foo рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдХреЛрдИ рднреА рдкрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдпрд╛рдд () рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЙрдбреНрдпреВрд▓ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА, рдЗрд╕рд▓рд┐рдП рдмрдВрдбрд▓рд┐рдВрдЧ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реЗрдЯ рддрдХ рд╕реАрдорд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЬрдм рддрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐, atd рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рди рдХреЗрд╡рд▓ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдереЛрдбрд╝рд╛ рд╢рд░реНрдордирд╛рдХ рд╣реИред
@aryzing рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рдХрд▓реНрдк 1 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ # 12888 рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрдЧреАред
svr рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП xhr рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ to
рдЖрд░реНрдЪрд░-SVGs
рдЪреВрдБрдХрд┐ ant deisgn
рд╕реНрд╡рдпрдВ рдЕрдзрд┐рдХ рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк хЫ╛цаЗцЦЗф╗╢
рдХреЛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рд╡реЙрд▓реНрдпреВрдо рдкрд░ рдХрдмреНрдЬрд╛ рди рдХрд░реЗред рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдЪреВрдВрдХрд┐ рдЪреАрдВрдЯреА рдбреАрдЬрд┐рдЧреНрди рд╕реНрд╡рдпрдВ рдЕрдзрд┐рдХ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
@rororofff рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ $ 2.00 рдХрд╛ рд╡рд┐рддреНрдд рдкреЛрд╖рдг рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рднрдпрднреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдХреЗрд╡рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ https://github.com/AustinGreen/cra-antd-starter
рдЗрд╕рдореЗрдВ рдЖрдЗрдХрди рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕, рдФрд░ рдмрд┐рдирд╛ рдЦрд╛рд░рд┐рдЬ рдХрд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред @Ndbroadbent , @patricklafrance рдФрд░ рдкреВрд░реА рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдХреЛ рдЙрдирдХреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рднрдпрднреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдХреЗрд╡рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ https://github.com/AustinGreen/cra-antd-starter
рдЗрд╕рдореЗрдВ рдЖрдЗрдХрди рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕, рдФрд░ рдмрд┐рдирд╛ рдЦрд╛рд░рд┐рдЬ рдХрд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред @Ndbroadbent , @patricklafrance рдФрд░ рдкреВрд░реА рдПрдВрдЯреА-рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдХреЛ рдЙрдирдХреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдЗрд╕реЗ Nextjs рдРрдк рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
@AustinGreen рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рд╕рд╛рдЗрдбрдмрд╛рд░ рд╡рд╛рд▓реЗ рдРрдк рдФрд░ рдПрдХ рдмрдЯрди рдХреЗ рд▓рд┐рдП ~ 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
:
рдЪреВрдБрдХрд┐
ant deisgn
рд╕реНрд╡рдпрдВ рдЕрдзрд┐рдХ рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдкхЫ╛цаЗцЦЗф╗╢
рдХреЛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рд╡реЙрд▓реНрдпреВрдо рдкрд░ рдХрдмреНрдЬрд╛ рди рдХрд░реЗред рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:рдЪреВрдВрдХрд┐ рдЪреАрдВрдЯреА рдбреАрдЬрд┐рдЧреНрди рд╕реНрд╡рдпрдВ рдЕрдзрд┐рдХ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдкреЛрд╕реНрдЯреАрд░рд┐рдЯреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╣реИрд▓реЛ, рдЬрдм @ 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 рдРрдк [рдЙрддреНрд╕рд░реНрдЬрд┐рдд] рдРрдк
рдиреЛрдЯреЛрдВ рдХреА рдЬреЛрдбрд╝реА:
рд╢реБрдХреНрд░ рдкрд░, рдЕрдкреНрд░реИрд▓ 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
ред
@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)
- рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = { //... resolve: { alias: { "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js") } } };
- рдмрдирд╛рдПрдВ
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
рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХреЗ?
рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рд╣реИрдХ:
- рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = { //... resolve: { alias: { "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js") } } };
- рдмрдирд╛рдПрдВ
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 рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБ, рд╣рд╛рд▓рд╛рдБрдХрд┐)
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдЧрд░ рдореЗрдЬ рдкрд░ рд╕реЙрд░реНрдЯрд░ рддреАрд░ рдЧрд╛рдпрдм рд╣реИрдВ:
<i aria-label="icon: caret-down" class="anticon anticon-caret-down ant-table-column-sorter-down off">
ред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ <i />
рдЯреИрдЧ рдЦрд╛рд▓реА рд╣реИред рдЖрдк рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдЗрдХрди рдХрд╛ рдирд╛рдо caret-down
ред@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. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдЗрдХрди рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреИрдХреЗрдЬ рдХреНрдпреЛрдВ рд╣реИ, рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ?
2. рд╡реЗрдмрдкреИрдХ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ = {'atd': 'antd'} рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА atd рдХреЛ рдкреИрдХреЗрдЬ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?
1. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдЗрдХрди рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреИрдХреЗрдЬ рдХреНрдпреЛрдВ рд╣реИ, рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ?
2. рд╡реЗрдмрдкреИрдХ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ = {'atd': 'antd'} рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА atd рдХреЛ рдкреИрдХреЗрдЬ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?
@wiiler
рдЗрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ, рдпрд╣ рдПрдХ рдШрдЯрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдЗрдХрди рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ
https://github.com/ant-design/ant-design/issues/12011#issuecomment -418003883
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд┐рд▓реНрдЯ-рдЗрди рдШрдЯрдХ рдЬреЛ<Icon />
, рдЬреИрд╕реЗ<DatePicker />
,<Select />
рдЖрджрд┐, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдпрджрд┐ рдЖрдк рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмреЗрдмрд▓-рдкреНрд▓рдЧрдЗрди-рдЖрдпрд╛рдд рдкреНрд▓рдЧрдЗрди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдФрд░ 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
- рдЗрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ, рдпрд╣ рдПрдХ рдШрдЯрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдЗрдХрди рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ
> # 12011 (рдЯрд┐рдкреНрдкрдгреА)
> рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд┐рд▓реНрдЯ-рдЗрди рдШрдЯрдХ рдЬреЛ<Icon />
, рдЬреИрд╕реЗ<DatePicker />
,<Select />
рдЖрджрд┐, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред- рдпрджрд┐ рдЖрдк рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмреЗрдмрд▓-рдкреНрд▓рдЧрдЗрди-рдЖрдпрд╛рдд рдкреНрд▓рдЧрдЗрди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдорд┐рд▓ рдЧрдпрд╛, рдзрдиреНрдпрд╡рд╛рдж
рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдФрд░ 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 рд╕реЗ рдмрдврд╝рд╛рдПрдБ
рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рд╕рдордп рдХрд╛ рдЕрдиреБрдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рдмрдВрдбрд▓ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд 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 рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдЖрдЗрдХрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореБрджрд╛рдп рд╕реЗ рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред "
рдЕрдВрддрд┐рдо рдмрд┐рдЯ рдХреВрд▓, рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯ рдФрд░ рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯ рдФрд░ рдЖрдЗрдХрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░реА рдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛? рдпрд╣ рдХрдм рддрдХ рд╣реИ рдФрд░ рдЕрднреА рднреА рдЗрд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
рдХреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░реА рдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛? рдпрд╣ рдХрдм рддрдХ рд╣реИ рдФрд░ рдЕрднреА рднреА рдЗрд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?
@ рдЭреЗ-рд╡рд╣
рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ!
рдХреНрдпрд╛ рдпрд╣ рдЕрдзрд┐рдХрд╛рд░реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ?рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдЧреИрд░-рдЬрд░реВрд░реА рдкреИрдХреЗрдЬ рд╡рд╛рдХрдИ рдХрд╛рдпрдо рд╣реИ
@DemoHu
@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 рддрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рд╕рдордЧреНрд░ рдкрд░рдд рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдПрдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд╡реГрджреНрдзрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
@muzea https://ant.design/compenders/icon/#SVG -icons
@ afc163 рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрд╕рд╡реАрдЬреА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдЕрдзрд┐рдХрд╛рд░реА рдиреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ svg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ рдФрд░ рдорд╛рдВрдЧ рдкрд░ рдЖрдЗрдХрди рдХреИрд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХрдИ рдирдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рд╣реИред
@ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рдХреЗ рдкреНрд░рднрд╛рд╡ svg
рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдкреНрд░рджрд░реНрд╢рди рдкрд░ svg
хЕ╢хнРpath
рдкрде рдбреНрд░рд╛рдЗрдВрдЧ рдЗрд╕реЗ рд╕рдордЭреЛред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдкрд░рдд рдСрдкрд░реЗрд╢рди рдХреА рд╡реГрджреНрдзрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдмрд╛рдж рд╡рд╛рд▓рд╛ рдмрдбрд╝рд╛ рд╕рд┐рд░ рд╣реИред
рдпрджрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ svg
рдЖрдЗрдХрди (рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ) рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдПрдХ рдмрдбрд╝рд╛ рдЖрдЗрдХрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреНрд░рд╛рдЗрдВрдЧ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд╣рд╕рдВрдмрдВрдз рдЧреБрдгрд╛рдВрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╣реИред рдХреНрдпрд╛ рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдбрд┐рдЬрд╛рдЗрдирд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЖрдЗрдХрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдЕрдиреБрднрд╡ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЖрдЗрдХрди рдмрд╣реБрдд рд╡рд┐рдХреГрдд рдирд╣реАрдВ рд╣реИ), рдФрд░ рдкрде рд╕рдВрдкреАрдбрд╝рди рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдХреВрд▓рди рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЙрдЪреНрдЪ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрдкреЛрдЬрд╝рд┐рд╢рди рд▓реЗрдпрд░ рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ svg sprite
рд╕реНрдХреАрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдкреЗрдЬ рдкрд░ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ (рд╣реЗрдбрд░ рдпрд╛ рдЕрдиреНрдп рдкрджреЛрдВ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП), рдЬреЛ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдЙрдЪреНрдЪ рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд┐рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд▓реЛрдЧ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдЗрдХрди рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ svg
рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдпреЛрдЧреНрдп рд╣реИрдВ?
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдиреБрд╡рд░реНрддреА рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрдореА, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╡реНрдпрдХреНрддрд┐ рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
@ lizy0329 рджреВрд╕рд░реЛрдВ рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдЕрдЯрдХрд▓ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХрд┐рддрдирд╛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╣реИ, рджреВрд╕рд░реЛрдВ рдХреЛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рдЬрдирд╕рдВрдкрд░реНрдХ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╕реНрд╡рд╛рдЧрдд рд╣реИ
@HeskeyBaozi
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЖрдЗрдХрди рднрд╛рдЧ рдХрд╛ рдореЗрд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдмрд╣реБрдд рдХрдо рдкреНрд░рджрд░реНрд╢рди рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдУрдПрдХреНрд╕ рдкрд░ рдХреНрд░реЛрдо, рдЬрдм рдкреГрд╖реНрда рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрдирд╛рдЯ рдЖрдЗрдХрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реЛрдЧрд╛ред
рд╢рд╛рдпрдж 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)
- рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = { //... resolve: { alias: { "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js") } } };
- рдмрдирд╛рдПрдВ
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';
рдореИрдВрдиреЗ
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';
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ
рдЙрдкрд░рд╛рдВрдд
рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдореЗрд░реА рдорджрдж рдХреА рд╣реИ!
@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
рдЧрд┐рд╕реНрдЯ
рдХреНрдпрд╛ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдЕрднреА рднреА рдЙрдЪреНрдЪ рдирд╣реАрдВ рд╣реИ
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд┐рд▓рд╛рддреЗ рд╣реБрдП рдкреЗрдбрд╝ 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
рдЧрд┐рд╕реНрдЯрдХреНрдпрд╛ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдЕрднреА рднреА рдЙрдЪреНрдЪ рдирд╣реАрдВ рд╣реИ
https://github.com/ant-design/ant-design/issues/12011#issuecomment -552117531 рдЬреИрд╕реЗ рдЖрдкрдХреЛ рдХреМрди рд╕реЗ рдЪрд┐рд╣реНрди рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ icons.js рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (antd> = 3.9)
- рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = { //... resolve: { alias: { "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js") } } };
- рдмрдирд╛рдПрдВ
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)
- рдорд╛рдЙрд╕ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдПрдбреЙрдкреНрдЯ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ:
module.exports = { //... resolve: { alias: { "@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js") } } };
- рдмрдирд╛рдПрдВ
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 рддрдХ рдШрдЯрд╛ рджрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж
рдЬрдм рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
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
рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗрдЧреА:
рдмрд╛рдж рдореЗрдВ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ icons.tsx
рдореЗрдВ рдХрд┐рди рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдШрдЯрдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред ЁЯЩВ
@matzeeable рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рд╡реЛ рдХреЛрд╢рд┐рд╢ рдХреАред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓рддреА рд╣реИрдВред рдпрд╣рд╛рдВ рдХреЛрдб рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 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 рдиреЗ рдЗрдирд╛рдо рджрд┐рдпрд╛ рд╣реИ ред рдЗрд╕реЗ рдЬрд╛рд░реА рдХрд░реЗрдВ рдореБрджреНрджреЗ рдкрд░ рджреЗрдЦреЗрдВ
рдореБрдЭреЗ @ рдХреЗрдорд┐рдпреЛрдХреЗрд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдФрд░ [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 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЯреНрд░реАрд╢реЗрдХрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреВрд░реЗ рдбрд┐рдЬрд╛рдЗрди / рдЖрдЗрдХрди рдкреИрдХреЗрдЬ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХреГрдкрдпрд╛ [email protected] рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред
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";
@ 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
}]
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"],
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
ЁЯТв рд╕рд┐рд░рджрд░реНрджред ред ред ред рдЪрд╛рдЪрд╛ рдХреЗред ред ред