Lucide
由社区维护的统一线性 SVG 图标库,提供 1,600 多个图标、Tree Shaking 和多框架组件包。
项目概述
Lucide 是 Feather Icons 的社区延伸项目,以一致的 24×24 线性视觉语言提供界面图标。它拥有 React、Vue、Svelte、Solid、Angular、Astro、React Native 和静态资源包,每个图标都可独立导入并通过属性调整。
Lucide 是一个由社区维护的开源 SVG 图标工具包,也是 Feather Icons 的延伸项目。它目前提供 1,600 多个风格统一的图标,核心设计以 24×24 ViewBox、线性轮廓和一致的描边规则为基础。官方包覆盖 React、Vue、Svelte、Solid、Preact、Angular、Astro、React Native、原生 JavaScript 和静态 SVG/Sprite/Icon Font;框架包将每个图标导出为独立组件,现代构建工具可以通过 Tree Shaking 只保留实际导入的图标。Lucide 主体采用 ISC 许可证,源自 Feather 的部分图标仍附带 MIT 许可文本;从 v1 开始官方已移除所有品牌 Logo,品牌图标应改用专门来源。
主要特点
Lucide 以统一的图形规范、独立组件导出和多框架包提供轻量、可预测的界面图标体验。
1,600+ 统一图标
图标由同一设计原则约束,适合在导航、表单、工具栏和状态反馈中维持稳定的视觉重量。
独立 SVG 组件
每个图标都是渲染内联 SVG 的独立组件,可直接参与服务端渲染、CSS 继承和事件处理。
Tree Shaking
官方框架包采用模块化导出,静态导入的 Camera、Search 等图标会保留,未使用图标可被现代 Bundler 移除。
跨框架官方包
提供 React、Vue、Svelte、Solid、Preact、Angular、Astro、React Native 与原生 JavaScript 实现。
TypeScript 类型
组件、图标名称、IconNode 与 SVG Props 均提供类型,便于封装设计系统和复用图标映射。
统一外观属性
通过 size、color、strokeWidth 和 absoluteStrokeWidth 控制尺寸、颜色与描边,同时支持标准 SVG 属性。
继承 currentColor
默认颜色使用 currentColor,图标可以自然继承按钮、链接和状态容器的文字颜色。
绝对描边宽度
absoluteStrokeWidth 可在图标尺寸变化时维持视觉描边宽度,避免大尺寸图标线条过粗。
默认无障碍降噪
Lucide v1 默认给图标设置 `aria-hidden=true`,装饰图标不会向屏幕阅读器重复朗读旁边文字。
全局 Context 配置
React、Vue、Svelte 和 Solid 等包可通过 Provider 或全局设置统一尺寸、颜色与描边,不必逐个传参。
静态资源多格式
lucide-static 提供独立 SVG、SVG Sprite、Icon Font 与 SVG String 模块,适合静态站、服务端生成和无框架项目。
动态图标组件
React 的 DynamicIcon 可根据字符串名称异步加载图标,适合 CMS 或数据库存储图标名称的场景。
Lucide Lab 与自定义 IconNode
实验性图标可从 @lucide/lab 取得,再通过通用 Icon 组件渲染;团队也能使用相同 IconNode 结构扩展。
组合与扩展 SVG
组件支持子 SVG 元素,可以嵌套图标、添加徽标、圆点或文字,创建受控的业务图标变体。
设计与编辑器资源
官方提供 Figma 插件、VS Code 支持和可浏览搜索的网站,方便设计与开发使用同一图标名称。
社区设计流程
新图标通过公开 Issue、设计规范与 Pull Request 审核,持续扩充同时尽量保持集合一致性。
适用场景
它尤其适合希望产品界面保持统一线性视觉语言,并需要静态渲染与精确 Bundle 控制的团队。
SaaS 与管理后台
导航、数据表格、筛选、设置和状态操作需要大量统一小图标,Lucide 的线性语言很适合信息密集界面。
设计系统与组件库
将 Lucide 组件封装到 Button、Menu、Input 和 Toast 中,并通过 Provider 统一大小与描边。
内容与营销网站
可用于功能列表、CTA、联系信息和流程说明,静态导入不会产生运行时图标 API 请求。
多框架产品线
React、Vue、Svelte、Solid、Angular 与 Astro 项目可以共享同一图标名称和视觉规范。
React Native 应用
lucide-react-native 让移动端复用相同图标语义,同时使用 React Native 的 SVG 渲染环境。
静态站与服务端生成
lucide-static 的 SVG 文件、Sprite 和字符串模块适合不需要客户端组件的文档站或模板生成器。
CMS 驱动导航
当编辑者在后台选择图标并存储名称时,可使用 DynamicIcon,但应限制允许列表并评估模块开销。
自定义业务图标
通过嵌套 Lucide 图标与原生 SVG 元素添加通知点、文件类型或业务标记,保持主集合风格。
优点与注意事项
技术选型不仅要看能力,也要理解它带来的团队成本。
主要优点
Lucide 擅长的地方
- 1,600 多个图标采用统一线性风格,界面一致性强
- 静态导入支持 Tree Shaking,生产 Bundle 只保留实际使用图标
- 图标直接渲染内联 SVG,不依赖运行时远程 API
- React、Vue、Svelte、Solid、Angular、Astro 和 React Native 均有官方包
- size、color、strokeWidth 与 SVG Props 定制直接且类型完整
- 默认 currentColor 易于接入现有主题和状态颜色
- v1 默认 aria-hidden,装饰图标的无障碍行为更合理
- Provider 可以统一设计系统中的图标样式
- 静态 SVG、Sprite、Icon Font 和 Node.js 字符串满足无框架场景
- 社区维护活跃,新图标与框架包持续更新
- ISC 许可宽松,并清楚保留 Feather 衍生图标的 MIT 说明
需要注意
采用前应考虑的问题
Lucide 明确拒绝品牌图标,以降低商标风险并保持设计一致。品牌 Logo 应使用 Simple Icons 或官方品牌资产。
官方不以 Filled Icons 为核心支持方向。虽然某些图标可以设置 fill,但并非所有轮廓都适合填充。
按名称从主包枚举全部图标或构建通用映射可能破坏 Tree Shaking。页面已知图标应直接命名导入。
官方说明它会在构建时纳入全部图标入口、生成大量独立模块,可能增加构建时间、网络请求和加载闪烁。
服务端和客户端必须能解析同一个图标名称,否则初始渲染可能缺失或产生 Hydration 差异。
lucide-react 包含大量组件文件,node_modules 占用较大;正确 Tree Shaking 后生产体积仍取决于实际导入。
装饰图标无需处理;若图标独立表达必要信息,应传 aria-label 或 title,使其重新暴露给辅助技术。
只有图标的 Button 应设置 aria-label,图标本身继续保持隐藏,避免屏幕阅读器把图形和操作拆开朗读。
普通 strokeWidth 会随 SVG 缩放。用于大尺寸展示时应评估 absoluteStrokeWidth 或针对性调整。
Lucide 强调一致性,因此图标数量远少于 Iconify 聚合生态,也不覆盖 Emoji、旗帜和大量行业 Logo。
同一图标在不同产品中可能含义不同。关键操作应配文字、Tooltip 或无障碍名称,并通过用户测试验证。
嵌套图标和额外 SVG 元素必须位于外层 ViewBox 内,并检查小尺寸下是否仍然清晰。
社区会修正图标几何、名称和元数据。快照测试或品牌级精确图形应固定版本并审查升级 Diff。
ISC 要求版权与许可声明出现在副本中;部分 Feather 衍生图标还附带 MIT。模板和图标再分发产品应保留完整 LICENSE。
快速开始
下面以 React 为主展示静态导入、全局 Provider、无障碍、动态 CMS 图标和 Lucide Lab 扩展。
bashnpm install lucide-reacttsximport { Camera, Search, Settings } from "lucide-react";
export function Toolbar() {
return (
<div className="flex items-center gap-3">
<Camera aria-hidden="true" />
<Search size={20} strokeWidth={1.75} aria-hidden="true" />
<Settings
size={32}
absoluteStrokeWidth
className="text-sky-600"
aria-hidden="true"
/>
</div>
);
}tsximport { House, Trash2 } from "lucide-react";
export function IconActions() {
return (
<div>
<button type="button" aria-label="返回首页">
<House />
</button>
<button type="button" aria-label="删除项目">
<Trash2 />
</button>
</div>
);
}tsximport { CircleAlert } from "lucide-react";
export function WarningIcon() {
return (
<CircleAlert
color="var(--destructive)"
aria-label="警告"
/>
);
}tsximport {
Bell,
House,
LucideProvider,
Settings,
} from "lucide-react";
export function AppIcons() {
return (
<LucideProvider
size={20}
color="currentColor"
strokeWidth={1.75}
>
<House />
<Bell />
<Settings />
</LucideProvider>
);
}tsximport { DynamicIcon } from "lucide-react/dynamic";
const allowedIcons = new Set(["camera", "house", "settings"]);
export function CmsIcon({ name }: { name: string }) {
if (!allowedIcons.has(name)) return null;
return (
<DynamicIcon
name={name as "camera" | "house" | "settings"}
size={20}
aria-hidden="true"
/>
);
}bashnpm install lucide-react @lucide/labtsximport { Icon } from "lucide-react";
import { coconut } from "@lucide/lab";
export function CoconutIcon() {
return (
<Icon
iconNode={coconut}
size={24}
aria-hidden="true"
/>
);
}bashnpm run lint
npm run typecheck
npm run build
# 检查 Bundle、图标按钮名称、深色模式和小尺寸清晰度下一步:普通页面始终优先静态导入具体图标;只有图标名称来自 CMS 或数据库时才使用 DynamicIcon,并在构建与网络分析中确认它的模块数量。
类似项目
这些项目覆盖 Lucide 的多框架使用场景,以及更大规模的多图标集聚合方案。
React
用于构建 Web 和原生用户界面的组件化 JavaScript 库。
查看项目Vue.js
渐进式 JavaScript 框架,易学易用且拥有优秀的性能表现。
查看项目Svelte
将组件编译为精简 JavaScript 的现代 Web UI 框架。
查看项目SolidJS
采用细粒度响应式和 JSX 构建高性能 Web 用户界面的 JavaScript 库。
查看项目Astro
面向内容网站的 Web 框架,默认发送更少的客户端 JavaScript。
查看项目React Native
使用 React 和原生平台组件构建 Android、iOS 及更多平台应用的开源框架。
查看项目shadcn/ui
把可访问、可组合的组件源码直接加入项目,由团队完整拥有和定制的 UI 分发平台。
查看项目Iconify
统一访问 200 多个开源图标集和 30 万多个 SVG 图标的生态系统,支持组件、CSS、API、设计插件与自托管。
查看项目Heroicons
由 Tailwind CSS 团队手工设计的 MIT SVG 图标集,提供四种光学尺寸及 React、Vue 官方组件。
查看项目Phosphor Icons
提供 Thin 到 Fill 多种粗细与风格的图标家族,适合需要同一图形多种重量的产品。
访问官网Tabler Icons
大规模的统一线性 SVG 图标集,提供多框架包、Webfont 与设计资源。
访问官网Lucide vs Iconify
Lucide 与 Iconify 都能在现代前端中提供 SVG 图标与多框架集成,但定位相反。Lucide 是单一、统一、精心维护的线性图标体系;Iconify 是聚合和标准化数百个图标集的平台,追求覆盖范围与交付方式的多样性。
| 比较维度 | Lucide | Iconify |
|---|---|---|
| 核心定位 | 统一风格的社区线性图标库 | 多图标集聚合、数据格式、API 与工具生态 |
| 图标规模 | 1,600+,集中维护 | 300,000+,来自 200+ 集合 |
| 视觉一致性 | 统一 24×24 网格、描边与设计规则 | 取决于所选集合,跨集合差异明显 |
| 品牌与多彩图标 | v1 明确移除品牌 Logo,主要为单色 UI 图标 | 可访问品牌、Emoji、旗帜和多色集合 |
| 默认交付 | 安装框架包并静态导入独立组件 | 公共 API 按需加载,也支持本地数据和构建插件 |
| Tree Shaking | 静态导入时由 Bundler 移除未使用图标 | 按 API、拆分数据包或插件扫描实现按需交付 |
| SSR | 静态组件可直接输出内联 SVG | 动态组件常需客户端加载;Web Component 或离线数据可改善 |
| 定制 | size、color、strokeWidth、Provider 与 SVG Props | 组件 Props、IconifyJSON、Tools 和自定义 API Provider |
| 动态图标 | DynamicIcon 可用,但会增加模块和构建开销 | 字符串名称与 API 按需加载是核心模式 |
| 设计工具 | Lucide Figma 插件与统一图标目录 | Figma、Penpot、Sketch 插件和跨集合搜索 |
| 许可 | 主体 ISC,部分 Feather 衍生图标 MIT | 框架 MIT,各图标集许可不同 |
| 更适合 | 需要一致 UI 语言、静态渲染和简单依赖治理 | 需要海量选择、品牌图标、图标搜索 API 或自建平台 |
如果产品主要需要按钮、导航、状态和业务操作图标,Lucide 的统一风格、静态组件和明确许可边界通常更省心;如果还需要品牌、Emoji、旗帜、多个视觉体系或图标选择器 API,Iconify 的覆盖面更强。可以把 Lucide 作为产品主图标集,只通过 Iconify 引入经过审核的少数缺口。
资料核验
版本、维护信息与本页采用的官方资料来源。
本页依据 Lucide v1 官方说明、React/Vue/Svelte/Static 文档、无障碍、DynamicIcon、Lucide Lab、品牌 Logo 声明、许可证与官方仓库整理。核验时 lucide-icons/lucide 仓库最近可见提交日期为 2026 年 7 月 25 日。项目更新频繁,具体图标 Path、名称和包版本应以安装时文档为准。
官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 25 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。