跳转到内容

图标

npm versionnpm monthly downloadsnpm sizenpm license

图标插件,使用简洁的 ::name:: 语法,在 Markdown 中内联使用来自 IconifyiconfontFontAwesome 的图标。

安装

sh
pnpm add vitepress-plugin-icons
sh
npm install vitepress-plugin-icons
sh
bun add vitepress-plugin-icons
sh
deno add vitepress-plugin-icons
sh
yarn add vitepress-plugin-icons

使用 Iconify 时,还需安装 @iconify/json 或按需安装对应的图标集。

使用

vitepress-tuck 模式 推荐

.vitepress/config.ts
ts
import { defineConfig } from 'vitepress-tuck'
import icons from 'vitepress-plugin-icons'

export default defineConfig({
  plugins: [icons()],
})

查看 vitepress-tuck 了解更多

WARNING

由于插件配置复杂度较高,仅推荐在 vitepress-tuck 模式下使用。

语法

使用 :: 分隔符内联插入图标,完整语法如下:

md
::name =size /color::
  • name — 图标名称,格式因提供商而异(见下方说明)。
  • =size — 可选,图标大小。支持 =宽x高(如 =1.2emx1.5em)或单个 =宽(如 =1.2em,同时作用于宽高)。
  • /color — 可选,图标颜色,如 /red/#ff0000

也可以在内容前添加提供商名称(iconify/iconfont/fontawesome)来为单个图标覆盖默认提供商,并为 FontAwesome 追加额外样式属性。

Iconify

图标名称使用 图标集:图标 格式,如 tdesign:logo-github-filled

md
::tdesign:logo-github-filled::
::tdesign:logo-github-filled =36px::
::tdesign:logo-github-filled /#f00::
::tdesign:logo-github-filled =36px /#f00::
::skill-icons:vscode-dark =36px::

渲染结果:

iconfont

图标名称使用纯名称(不带 icon- 前缀),如 hot 会解析为 icon-hot

md
::hot::
::hot =24px::
::hot =24px /#f00::
::iconfont hot =24px /#f00::

渲染结果:

FontAwesome

图标名称使用纯名称,如 circle-userborderbeatrotate-902xl 等额外属性追加在名称之后,并转换为 fa-* 类名。

md
::circle-user::
::circle-user =1.2em /#fff::
::fontawesome circle-user::
::fontawesome circle-user border::
::fontawesome circle-user rotate-90::
::fontawesome circle-user beat::
::fontawesome circle-user 2xl beat::

渲染结果:

配置

插件接受单个提供商配置、配置数组,或不传参数(默认使用 Iconify)。配置多个提供商时,通过 default: true 标记 ::name:: 语法使用的默认提供商。

通用选项

选项类型默认值说明
provider'iconify' | 'iconfont' | 'fontawesome''iconify'图标提供商
defaultbooleanfalse是否作为默认提供商
colorstring''默认图标颜色
sizestring | number'1.2em'默认图标大小

Iconify

继承 unplugin-iconsunplugin-icons/resolver 的配置项。

.vitepress/config.ts
ts
icons({
  provider: 'iconify',
  default: true,
  size: '1.2em',
  // unplugin-icons 选项
  scale: 1,
  customCollections: { /* ... */ },
})

iconfont

选项类型默认值说明
prefixstring'icon-'图标类名前缀
assetsIconAssetLink | IconAssetLink[]-iconfont 资源链接
.vitepress/config.ts
ts
icons({
  provider: 'iconfont',
  default: true,
  prefix: 'icon-',
  assets: '//at.alicdn.com/w/font_xxx.css',
})

FontAwesome

选项类型默认值说明
prefixLiteralUnion<FontAwesomePrefix>'fas'默认图标前缀
assetsArrayable<FontAwesomeAssetBuiltIn | IconAssetLink>'fontawesome'内置资源名或自定义资源链接

assets 选项接受:

  • 'fontawesome' — 从 jsDelivr CDN 注入 solid、regular 和 base 套件。
  • 'fontawesome-with-brands' — 仅从 jsDelivr CDN 注入 brands 套件。
  • 自定义的 .css.js 资源链接。
.vitepress/config.ts
ts
icons({
  provider: 'fontawesome',
  default: true,
  prefix: 'fas',
  assets: 'fontawesome',
})

prefix 支持以下别名:

前缀别名对应类名
fassfa-solid fa-name
farrfa-regular fa-name
fallfa-light fa-name
fattfa-thin fa-name
fadsdsfa-duotone fa-solid fa-name
fassssfa-sharp fa-solid fa-name
fasrsrfa-sharp fa-regular fa-name
faslslfa-sharp fa-light fa-name
faststfa-sharp fa-thin fa-name
fasdssdsfa-sharp-duotone fa-solid fa-name
fabbfa-brands fa-name

也可以在图标名称中使用 prefix:name 格式为单个图标指定前缀,如 fab:github

多提供商组合

.vitepress/config.ts
ts
icons([
  { provider: 'iconify' },
  { provider: 'iconfont', default: true, assets: '//at.alicdn.com/w/font_xxx.css' },
  { provider: 'fontawesome', assets: 'fontawesome' },
])

上述配置中,::name:: 默认使用 iconfont,::iconify name::::fontawesome name:: 则显式选择其他提供商。

基于 MIT 许可发布