#icons #svg-icons #proc-macro #开发工具代码生成器

iconify

用于从Iconify API生成图标的过程宏

10个版本

0.3.1 2024年4月20日
0.3.0 2024年4月4日
0.2.6 2023年11月10日
0.2.5 2023年10月4日
0.0.1 2023年7月5日

768进程宏

Download history 24/week @ 2024-05-03 28/week @ 2024-05-10 43/week @ 2024-05-17 23/week @ 2024-05-24 28/week @ 2024-05-31 30/week @ 2024-06-07 26/week @ 2024-06-14 33/week @ 2024-06-21 56/week @ 2024-06-28 62/week @ 2024-07-05 37/week @ 2024-07-12 37/week @ 2024-07-19 107/week @ 2024-07-26 39/week @ 2024-08-02 28/week @ 2024-08-09 14/week @ 2024-08-16

每月190 次下载
escape-artist 中使用

MIT/Apache

26KB
409

iconify-rs

这个crate提供了一个宏,用于从Iconify嵌入SVG。有关图标列表,请参阅Iconify图标集

📝 使用方法

let svg = iconify::svg!("mdi:home", color = "red")

iconify::svg!会将SVG作为字符串下载并嵌入。它还会缓存请求,因此不会重复下载相同的SVG。

let svg = "<svg>...</svg>"

选项

您可以向宏传递选项以自定义SVG。

let svg = iconify::svg!("mdi:home",
    width = "24",
    height = "24",
    color = "red",
    // ... and more.
)

支持所有来自Iconify API的选项。您可以在此处找到svg!宏的选项文档。

模板

它也可以直接在rsx中使用,或任何编译时模板引擎。

Maud

html! {
    body {
        .card {
            (PreEscaped(iconify::svg!("mdi:home")))
            p { "Hello!" }
        }
    }
}

Askama

<body>
  <div class="card">
    {{ iconify::svg!("mdi:home")|safe }}
    <p>Hello!</p>
</body>

✨ 功能

  • 直接从Iconify嵌入SVG
  • 缓存请求(默认功能)
  • 离线模式
  • SVG转换(通过API)
  • (即将推出)CSS获取

🔌 离线模式

如果您不想在CI(或其他原因)中让iconify-rs在编译时进行请求,您可以使用离线模式与准备好的图标。

  1. 启用offline功能。
  2. 通过设置ICONIFY_PREPARE=true并运行cargo check来准备图标。这将为您在CARGO_MANIFEST_DIR中生成一个名为icons的目录,其中包含您调用的所有图标。
  3. 现在您可以出发了!只需运行cargo build,它将使用您准备的图标。

如果您想设置自定义目录,也可以设置ICONIFY_OFFLINE_DIR

⚙️ 配置

  • ICONIFY_URL - 设置要使用的API URL。如果未设置,默认为 "https://api.iconify.design"
  • ICONIFY_PREPARE - 如果设置,图标将写入离线图标目录(仅限离线模式)
  • ICONIFY_OFFLINE_DIR - 设置离线图标目录。如果未设置,默认为项目目录下的"/icons"

依赖项

~2–14MB
~166K SLoC