Open HeskeyBaozi opened 6 years ago
English Version WIP
好多 “�”
@HeskeyBaozi I can support English translation and documenting if you need helps
@HeskeyBaozi @B3nnyL , cool.
Could we add this in https://github.com/ant-design/ant-design-icons/blob/master/docs/
after this done?
@zombieJ Yeah, I believe so
该图标库是从
antd@3.9.0
开始正式使用的图标库,本文将讲述该图标库如何处理从设计师拿到的图标和具体处理流程。@ant-design/icons(-svg)
v4 贡献指南@ant-design/icons(-svg)
v4 Contribution Guide项目命令
所有命令运行之前,请确保运行
npm run bootstrap
引导各个包安装依赖和符号链接。npm run icons:generate
本项目中最重要的生成命令,运行后将读取
packages/icons/svg
目录下的所有图标文件,并通过packages/icons/build/templates
中的模板文件,将svg
转化成一个json
格式的抽象树,生成ts
文件并且存储在packages/icons/src
目录中。npm run icons:build
构建命令,使用
tsc
将packages/icons/src
目录下的文件编译到packages/icons/lib
目录下,使用的是commonjs
模块规范。同时也将packages/icons/src/index.ts
文件使用babel
编译到packages/icons/lib/index.es.js
, 使用的是ECMAScript
模块规范,用于未来可以使用tree shaking
打包特性。项目结构
基本用法
打包发布
npm run icons:generate
, 生成packages/icons/src/**/*.ts
文件packages/icons/src
目录结构如下npm run icons:build
进行编译packages/icons/lib
npm run lint
,npm run icons:test
lerna
打包发布lerna publish
添加新图标
packages/icons/svg
目录下的fill
、outline
和twotone
目录下进阶指南
工作流
图标的处理可以抽象成管道的流动,所以使用了
rxjs
来优雅地描述处理的过程。命令
npm run icons:generate
的本质就是运行packages/icons/build/generateIcon.ts
中的build(env)
函数。初始化环境
SVGO
处理器配置单色图标的
SVGO
处理器会额外清除路径元素上的fill
属性,因为单色图标路径上的fill
是没有必要的本质是清理
env.paths
路径中以_OUTPUT
结尾的标识符所代表的文件或者表达式这是单向一次性的过程,会根据
packages/icons/build/constants.ts
中的renameMapper
重新命名svg
目录下的图标文件。流
svgMetaDataWithTheme$
SVG 元数据流这是一个高阶流,根据三种主题风格
fill
、outline
、twotone
分别发射出分支流,每个分支流上的数据的接口类型如下:上述的图标定义类型接口如下:
BuildTimeIconMetaData$
构建时图标原数据流该数据流将高阶流
svgMetaDataWithTheme$
打平,并且进行了如下处理:对于非旧图标(指使用设计师给的新图标,通常大小比较小),修改其
viewBox
为64 64 896 896
。