Denji 是一个通过命令行管理 SVG 图标的工具,它从 Iconify 获取图标,经 SVGO 优化后生成为目标框架的原生组件,图标以 prefix:name 格式(如 lucide:check)引用,名称自动转为 PascalCase 组件名。
主要能力包括:init 初始化项目并生成 denji.json 配置与图标模板;add 添加图标(支持 --name 自定义组件名、--a11y 覆盖无障碍策略、--dry-run 预览);remove 删除图标(别名 rm/delete/del);list 列出图标(--display 可选默认、json、toon);export 导出 JSON 清单;import 从清单、文本文件或 stdin 批量导入;clear 清空全部图标。
使用方式:先运行 npx denji init --framework react --output ./src/icons.tsx 初始化,再 npx denji add lucide:check 添加,然后在代码中 import { Icons } 并渲染 <Icons.Check />。配置支持 typescript、a11y(hidden/img/title/presentation/false)、trackSource、allowedLibraries、react.forwardRef 以及 preAdd/postAdd 等生命周期 hooks。输出模式分单文件(file)与每图标一文件的文件夹(folder,Svelte 仅支持 folder)。
适用场景:需要在多框架项目中集中、类型安全地管理 SVG 图标,并可通过 hooks 接入格式化工具。限制:图标来源限于 Iconify;参考资料未提供定价、平台限制或效果数据。