Skip to content

Iconify Updates 2025

多个软件包的更新 28 Nov

多个 Iconify 软件包的新次版本已发布:

以及昨天发布的 Iconify Tools 新主版本。

所有这些发布的目标都是一致的:减少依赖项的数量。 在某些情况下,这些发布将依赖项的数量减少到了原来的一半以下。

如今,当开发者和 NPM 软件包日益成为恶意攻击的目标时,停止依赖不必要和过时的依赖项比以往任何时候都更加重要。

所有软件包的行为与之前保持一致,更改仅限于内部。

Iconify Tools 更新 27 Nov

Iconify Tools 的新主版本已发布。

变更:

  • 不再支持 CommonJS。
  • 减少了依赖项的数量和体积。
  • 使用新的自定义 XML 解析器。

CommonJS 支持

最大的变化是移除了对 CommonJS 的支持。

许多依赖项已不再支持 CommonJS, 这使得在提供 CommonJS 支持的同时无法更新这些依赖项。 为了保持所有内容处于最新状态,新版本也移除了对 CommonJS 的支持。

如果出于某些原因您仍然需要 CommonJS,请安装版本 4:

npm install @iconify/tools@cjs --save

新的 XML 解析器

SVG 现在由自定义解析器进行解析,该解析器比旧解析器小得多。

这大幅减少了包体积和依赖项数量。

迁移

无需进行任何操作。旧代码应能在新版本中正常运行。

Figma 更新 26 Nov

Iconify 图标集从多个来源进行更新,但主要来源于 Git 仓库和 Figma 文档。

遗憾的是,目前已无法再从 Figma 文档进行更新。

Figma 对 API 查询实施了严格的速率限制,导致无法通过 Figma API 获取包含大量 SVG 的文档。

受影响的图标集

这对 Iconify 有何影响?

这将影响从 Figma 获取的现有图标集的更新——这些图标集将不再维护。

Iconify Tools 移除了 axios 25 Nov

通常此处仅发布重大更新,但本次更新可能会对部分用户造成破坏性影响。

Iconify Tools 包已更新, 其中主要仅包含依赖项更新和少量修复, 但有一处更改可能具有破坏性:移除了对 axios 的依赖。

如果出于某些原因你需要使用 axios,可以通过新增的 setFetch() 函数进行设置:

jsimport axios from "axios";
import { setFetch } from "@iconify/tools";

const fetchAxios = axios.create({
 adapter: "fetch",
});

setFetch(fetchAxios);

Iconify Unplugin 18 Nov

隆重推出一种全新的图标渲染方式:Iconify Unplugin

它有何不同之处?

  • 与其他解决方案不同,它将图标拆分为 SVG + CSS。这大幅减少了 HTML 体积,同时仍能完整渲染 SVG。
  • 与按需加载图标不同,Unplugin Iconify 在构建阶段生成图标,因此图标会被打包并即时渲染。
  • 不再使用预构建的图标组件,而是按需生成组件,允许你自定义组件。
  • 支持多种框架。目前仅支持 Vue、Svelte、React 和 Preact。未来将很快添加更多支持。

请参阅 GitHub 仓库

工作原理示意图:

Unplugin Iconify 演示

文档尚未准备就绪,请参阅 GitHub 仓库 中的 readme 文件。

如果你曾使用过 Unplugin Icons 包(Iconify Unplugin 深受其启发),那么 Unplugin Icons 文档 可能会对你有所帮助。两者的用法非常相似。

Iconify for Tailwind CSS 更新 4 Nov

适用于 Tailwind 4 的 Iconify 插件 已更新。

共有两项更改:

  • 插件现在支持自定义图标集。
  • 修复了动态选择器插件中 square 选项无法正常工作的问题。

请参阅 Tailwind 4 中的自定义图标 文档。

Svelte 的 Icon 组件更新 3 Nov

Iconify Svelte 图标组件 的新次版本已发布。

此更新修复了在同一页面使用大量图标(超过 5000 个)时触发 Svelte 中 "effect_update_depth_exceeded" 错误的问题。

这也略微改变了组件的行为。现在图标会立即渲染,无需等待组件挂载,这在使用 SvelteKit 时可能会引发水合警告。

此外,ssr 属性已被移除,因为它已不再使用。

适用于 Svelte 的 SVG + CSS 组件 30 Sep

继 Vue 组件之后,现已发布全新且易于使用的 Svelte 图标组件。

详情请参阅 适用于 Svelte 的 SVG + CSS

组件使用了 Svelte runes,需要 Svelte 5 版本。

目前有超过 200 个图标组件包,每个图标集对应一个:

  • @iconify-svelte/material-symbols 用于 Material Symbols 图标
  • @iconify-svelte/solar 用于 Solar 图标
  • @iconify-svelte/tabler 用于 Tabler 图标

……以此类推。

要导入图标组件,请从 @iconify-svelte/prefix/icon 导入默认导出项,其中 "prefix" 是图标集前缀,"icon" 是图标名称。

示例:

jsimport GithubIcon from "@iconify-svelte/ri/github-line";

然后在 Svelte 模板中使用:

xml<GithubIcon height="1em" />

当 Iconify 图标集更新时,这些包将自动更新。

适用于 Vue 的 SVG + CSS 组件 29 Sep

全新易于使用的 Vue 图标组件已发布。

详情请参阅 适用于 Vue 的 SVG + CSS

目前有超过 200 个图标组件包,每个图标集对应一个:

  • @iconify-vue/material-symbols 用于 Material Symbols 图标
  • @iconify-vue/solar 用于 Solar 图标
  • @iconify-vue/tabler 用于 Tabler 图标

……以此类推。

要导入图标组件,请从 @iconify-vue/prefix/icon 导入默认项,其中 "prefix" 为图标集前缀,"icon" 为图标名称。

示例:

jsimport GithubIcon from "@iconify-vue/ri/github-line";

然后在 Vue 模板中使用:

xml<GithubIcon height="1em" />

当 Iconify 图标集更新时,这些包将自动同步更新。

SVG + CSS 的回退组件 28 Sep

在大多数使用场景下,SVG + CSS 是渲染图标的最佳方式。

然而,目前最新版本的 Safari 浏览器尚不支持该方式。

这意味着需要为 Safari 用户提供一个回退方案,以便在不使用 CSS 的情况下将图标渲染为完整的 SVG。

已为以下框架创建了回退组件:

  • Vue:@iconify/css-vue
  • Svelte:@iconify/css-svelte
  • React:@iconify/css-react

目前,只有 Vue 版本被标记为稳定版,因为它已在生产环境中经过充分测试。

React 和 Svelte 组件应该也是稳定的,因为它们与 Vue 组件共享代码库, 但由于依赖这些组件的图标组件尚未发布,这两个 组件目前尚无实际用途,也无法进行充分测试。

不再支持 CommonJS 6 Aug

Iconify Utils 的新主版本已发布。

此版本仅包含一项更改:移除对 CommonJS 的支持。

越来越多的 NPM 包正在移除对 CommonJS 的支持。 我尽可能长时间地同时支持 CJS 和 ESM,但 Iconify Utils 包所使用的一些依赖 已不再支持 CommonJS,因此是时候做出选择了:是保留过时的依赖,还是移除对 CommonJS 的支持。

在现代开发中,CommonJS 已无立足之地。它是过去的遗留物。

如果您的构建流程需要 CommonJS 支持,我强烈建议您更新代码。

如果您无法更新,仍然可以使用 Iconify Utils 的版本 2。您可以使用以下命令安装旧版本:

npm install @iconify/utils@cjs

200 个图标集 23 Jul

Iconify 迎来了一个新的里程碑:200 个开源图标集!

衷心感谢所有发布并维护开源图标的开发者。大多数开发者可能并未意识到,目前已有如此多出色的开源图标集。你几乎可以为任何事物找到对应的图标。

Iconify 图标组件更新 30 Apr

所有 Iconify 图标组件 的新主版本已发布。

变更(适用于所有组件):

  • 移除了若干先前已弃用的函数。

Vue 组件的额外变更:

  • 组件已使用 Vue 的组合式 API 重写。
  • 新增 load 事件,在从 API 加载图标数据时触发。

Svelte 组件的额外变更:

  • 组件已使用 Svelte 5 的 runes 语法重写。
  • onLoad 事件更改为 onload 回调,以适配新的 Svelte 5 语法。

有关更多详细信息,请参阅迁移指南,其中详细说明了每一项变更以及您需要在代码中做出的修改。

Iconify for Svelte 更新 10 Apr

Iconify 的 Svelte 图标组件 已使用 Svelte 5 的 runes 重写。

之前的版本使用的是 Svelte 4 语法。

组件的第 5 版可以通过 @next 标签进行安装:

npm install --save @iconify/svelte@next

尽管 Svelte 5 支持旧语法,但最好更新该组件以确保其面向未来。

此外,本次更新还包含以下更改:

  • 之前已弃用的函数 disableCache()enableCache() 已被移除。
  • 之前已弃用的函数 iconExists() 已被移除。请改用 iconLoaded()(功能完全相同……更多详情将在后续的版本说明中介绍)。

Iconify for Vue 更新 25 Mar

Vue 的 Iconify 图标组件 已使用 Vue 的组合式 API 重写。

之前的版本依赖于选项式 API。

组件的第 5 版可以使用 @next 标签进行安装:

npm install --save @iconify/vue@next

如果您更倾向于使用选项式 API,仍然可以使用 Iconify 图标组件的第 4 版。

为什么使用组合式 API?

许多 Vue 开发者正在逐渐放弃选项式 API,现在有一个新选项 可以从 Vue 打包文件中移除对选项式 API 的支持:"__VUE_OPTIONS_API__"。

如果存在依赖选项式 API 的组件,就意味着无法使用该新选项。

对于 Iconify 图标组件而言,使用哪种 API 没有任何区别, 使用任一 API 都没有明显优势,因此切换到组合式 API 是合理的。

其他变更

此外,新版本包含以下破坏性更新:

  • 已移除 enableStoragedisableStorage 函数。它们在上一个版本中已被弃用。
  • 移除了通配符导出,该导出在 Windows 上使用 Nuxt Icon 构建 Nuxt 应用时会导致 Node 警告。

Iconify API 更新 12 Feb

Iconify API 3.1.1 版本已发布。

本次更新包含一项关键错误修复。如果您正在运行 API 实例,请尽快进行更新。

API 可通过以下途径获取:

  • GitHub - 您可以在部署前对其进行自定义。
  • NPM - 无需运行完整服务器即可嵌入到应用中。
  • Docker - 适用于快速部署。

请参阅 API 文档

Tailwind CSS 4 的 Iconify 插件 7 Feb

Tailwind CSS 4 的 Iconify 插件现已可用。

该插件可与 Tailwind CSS 4 中新增的 @plugin 指令配合使用:

css@plugin "@iconify/tailwind4";

详情请参阅插件文档

Iconify 组件更新 4 Jan

所有 Iconify 图标组件 的新次版本已发布。

此更新仅影响按需从 Iconify API 加载图标数据的组件。

本次更新移除了使用 localStorage 缓存图标的功能,使所有组件均符合 GDPR 规范。

为什么要移除它?

在项目早期,API 尚不稳定且没有离线解决方案时,将图标缓存在存储中是一项非常有用的策略。

如今已有其他解决方案,例如各种 CSS 方案Unplugin Icons

从 API 加载图标的 Iconify 图标组件仅应在确保有网络连接的情况下使用。 这些组件不应用于可离线运行的应用程序。 如需离线使用,请参阅上方链接中的替代方案。

此外,所有 Iconify 图标组件都具备冗余机制,在主 Iconify API 主机无法访问时,可从备用 API 加载图标。因此,不再需要额外的缓存层。

代码变更

管理 localStorage 缓存的代码不仅被禁用,而是已被彻底移除。

这使得组件的包体积减少了约 10%。

函数 enableStoragedisableStorage 仍保留可用,以避免破坏用户的现有代码, 但它们实际上已不执行任何操作。 它们将在组件的新主版本中被移除。