返回项目目录
开发工具精选项目

Lucide

由社区维护的统一线性 SVG 图标库,提供 1,600 多个图标、Tree Shaking 和多框架组件包。

主要语言TypeScript
开源许可ISC(部分 Feather 图标 MIT)
项目类型开发工具
维护状态活跃维护
OVERVIEW

项目概述

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,品牌图标应改用专门来源。

图标数量1,600+
默认画布24 × 24
默认描边2 / currentColor
FEATURES

主要特点

Lucide 以统一的图形规范、独立组件导出和多框架包提供轻量、可预测的界面图标体验。

01

1,600+ 统一图标

图标由同一设计原则约束,适合在导航、表单、工具栏和状态反馈中维持稳定的视觉重量。

02

独立 SVG 组件

每个图标都是渲染内联 SVG 的独立组件,可直接参与服务端渲染、CSS 继承和事件处理。

03

Tree Shaking

官方框架包采用模块化导出,静态导入的 Camera、Search 等图标会保留,未使用图标可被现代 Bundler 移除。

04

跨框架官方包

提供 React、Vue、Svelte、Solid、Preact、Angular、Astro、React Native 与原生 JavaScript 实现。

05

TypeScript 类型

组件、图标名称、IconNode 与 SVG Props 均提供类型,便于封装设计系统和复用图标映射。

06

统一外观属性

通过 size、color、strokeWidth 和 absoluteStrokeWidth 控制尺寸、颜色与描边,同时支持标准 SVG 属性。

07

继承 currentColor

默认颜色使用 currentColor,图标可以自然继承按钮、链接和状态容器的文字颜色。

08

绝对描边宽度

absoluteStrokeWidth 可在图标尺寸变化时维持视觉描边宽度,避免大尺寸图标线条过粗。

09

默认无障碍降噪

Lucide v1 默认给图标设置 `aria-hidden=true`,装饰图标不会向屏幕阅读器重复朗读旁边文字。

10

全局 Context 配置

React、Vue、Svelte 和 Solid 等包可通过 Provider 或全局设置统一尺寸、颜色与描边,不必逐个传参。

11

静态资源多格式

lucide-static 提供独立 SVG、SVG Sprite、Icon Font 与 SVG String 模块,适合静态站、服务端生成和无框架项目。

12

动态图标组件

React 的 DynamicIcon 可根据字符串名称异步加载图标,适合 CMS 或数据库存储图标名称的场景。

13

Lucide Lab 与自定义 IconNode

实验性图标可从 @lucide/lab 取得,再通过通用 Icon 组件渲染;团队也能使用相同 IconNode 结构扩展。

14

组合与扩展 SVG

组件支持子 SVG 元素,可以嵌套图标、添加徽标、圆点或文字,创建受控的业务图标变体。

15

设计与编辑器资源

官方提供 Figma 插件、VS Code 支持和可浏览搜索的网站,方便设计与开发使用同一图标名称。

16

社区设计流程

新图标通过公开 Issue、设计规范与 Pull Request 审核,持续扩充同时尽量保持集合一致性。

USE CASES

适用场景

它尤其适合希望产品界面保持统一线性视觉语言,并需要静态渲染与精确 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 元素添加通知点、文件类型或业务标记,保持主集合风格。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

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 说明

需要注意

采用前应考虑的问题

v1 不再包含品牌 Logo

Lucide 明确拒绝品牌图标,以降低商标风险并保持设计一致。品牌 Logo 应使用 Simple Icons 或官方品牌资产。

它以描边图标为主

官方不以 Filled Icons 为核心支持方向。虽然某些图标可以设置 fill,但并非所有轮廓都适合填充。

静态导入才能获得最佳效果

按名称从主包枚举全部图标或构建通用映射可能破坏 Tree Shaking。页面已知图标应直接命名导入。

DynamicIcon 有额外成本

官方说明它会在构建时纳入全部图标入口、生成大量独立模块,可能增加构建时间、网络请求和加载闪烁。

动态图标 SSR 需要一致输入

服务端和客户端必须能解析同一个图标名称,否则初始渲染可能缺失或产生 Hydration 差异。

图标包安装体积不等于 Bundle

lucide-react 包含大量组件文件,node_modules 占用较大;正确 Tree Shaking 后生产体积仍取决于实际导入。

默认 aria-hidden 需要理解

装饰图标无需处理;若图标独立表达必要信息,应传 aria-label 或 title,使其重新暴露给辅助技术。

图标按钮的名称应放在按钮上

只有图标的 Button 应设置 aria-label,图标本身继续保持隐藏,避免屏幕阅读器把图形和操作拆开朗读。

尺寸变化会影响视觉线宽

普通 strokeWidth 会随 SVG 缩放。用于大尺寸展示时应评估 absoluteStrokeWidth 或针对性调整。

单一集合覆盖范围有限

Lucide 强调一致性,因此图标数量远少于 Iconify 聚合生态,也不覆盖 Emoji、旗帜和大量行业 Logo。

别让图标替代清晰文案

同一图标在不同产品中可能含义不同。关键操作应配文字、Tooltip 或无障碍名称,并通过用户测试验证。

组合图标需遵守 24×24 坐标

嵌套图标和额外 SVG 元素必须位于外层 ViewBox 内,并检查小尺寸下是否仍然清晰。

升级可能改变具体 Path

社区会修正图标几何、名称和元数据。快照测试或品牌级精确图形应固定版本并审查升级 Diff。

重新分发时保留许可文本

ISC 要求版权与许可声明出现在副本中;部分 Feather 衍生图标还附带 MIT。模板和图标再分发产品应保留完整 LICENSE。

QUICK START

快速开始

下面以 React 为主展示静态导入、全局 Provider、无障碍、动态 CMS 图标和 Lucide Lab 扩展。

1安装 React 包
bash
npm install lucide-react
2静态导入需要的图标
tsx
import { 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>
  );
}
3为图标按钮提供无障碍名称
tsx
import { 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>
  );
}
4让独立图标表达必要信息
tsx
import { CircleAlert } from "lucide-react";

export function WarningIcon() {
  return (
    <CircleAlert
      color="var(--destructive)"
      aria-label="警告"
    />
  );
}
5通过 Provider 统一默认样式
tsx
import {
  Bell,
  House,
  LucideProvider,
  Settings,
} from "lucide-react";

export function AppIcons() {
  return (
    <LucideProvider
      size={20}
      color="currentColor"
      strokeWidth={1.75}
    >
      <House />
      <Bell />
      <Settings />
    </LucideProvider>
  );
}
6仅在 CMS 场景使用动态图标
tsx
import { 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"
    />
  );
}
7使用 Lucide Lab 实验图标
bash
npm install lucide-react @lucide/lab
8通过 Icon 渲染 IconNode
tsx
import { Icon } from "lucide-react";
import { coconut } from "@lucide/lab";

export function CoconutIcon() {
  return (
    <Icon
      iconNode={coconut}
      size={24}
      aria-hidden="true"
    />
  );
}
9执行发布前检查
bash
npm run lint
npm run typecheck
npm run build

# 检查 Bundle、图标按钮名称、深色模式和小尺寸清晰度

下一步:普通页面始终优先静态导入具体图标;只有图标名称来自 CMS 或数据库时才使用 DynamicIcon,并在构建与网络分析中确认它的模块数量。

ALTERNATIVES

类似项目

这些项目覆盖 Lucide 的多框架使用场景,以及更大规模的多图标集聚合方案。

COMPARISON

Lucide vs Iconify

Lucide 与 Iconify 都能在现代前端中提供 SVG 图标与多框架集成,但定位相反。Lucide 是单一、统一、精心维护的线性图标体系;Iconify 是聚合和标准化数百个图标集的平台,追求覆盖范围与交付方式的多样性。

比较维度LucideIconify
核心定位统一风格的社区线性图标库多图标集聚合、数据格式、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 引入经过审核的少数缺口。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 29 日
核验版本Lucide v1;lucide-react 1.27.0
内容维护Docs100 编辑整理
项目维护状态活跃维护

本页依据 Lucide v1 官方说明、React/Vue/Svelte/Static 文档、无障碍、DynamicIcon、Lucide Lab、品牌 Logo 声明、许可证与官方仓库整理。核验时 lucide-icons/lucide 仓库最近可见提交日期为 2026 年 7 月 25 日。项目更新频繁,具体图标 Path、名称和包版本应以安装时文档为准。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 7 月 25 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 25 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库