@canonical/svelte-icons

中文文档
0.1.0发布于 2026/10/23LGPL-3.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 2397

作为斯维尔特组件的 Canonical 图标

中文使用文档
文档目录9 节
  1. 安装
  2. 使用量
  3. 基本用途
  4. 样式图标
  5. 性能优化
  6. 自定义图标
  7. 图标来源
  8. 发展
  9. 生成图标元数据

@ canonical/ svelte- icons (英语)

Canonical的设计系统图标被包装为Svelte 5组件. 此库提供来自 Canonical的Pragma设计系统 作为易于使用的斯维尔特组件.

[尖叫声] 这个包裹是实验阶段 在稳定释放之前,可能会发生重大变化。 目前不建议生产使用.

安装

bun add @canonical/svelte-icons

使用量

基本用途

单独导入图标并将其用作组件 :

<script>
  import { HomeIcon, SettingsIcon, UserIcon } from "@canonical/svelte-icons";
</script>

<HomeIcon />
<SettingsIcon class="custom-class" />
<UserIcon />

样式图标

图标默认继承当前文本的颜色和大小.

<script>
  import { SearchIcon } from "@canonical/svelte-icons";
</script>

<SearchIcon style="color: red; width: 2em; height: 2em;" />

性能优化

当多次使用同一图标时,可以使用 IconsOptimizationProvider 在生成标记中复制 SVG 定义:

<script>
  import { IconsOptimizationProvider, HomeIcon } from "@canonical/svelte-icons";
</script>

<IconsOptimizationProvider>
  <nav>
    <HomeIcon />
    <!-- All instances share the same SVG definition -->
    <HomeIcon />
    <HomeIcon />
  </nav>
</IconsOptimizationProvider>

这在多次渲染同一图标时特别有用.

看看这个 节点树大小比较 故事可以看到DOM的大小差异 优化与非优化渲染.

自定义图标

您也可以使用 IconBase 组件 :

<script>
  import { IconBase } from "@canonical/svelte-icons";
</script>

<IconBase iconName="my-custom-icon">
  <svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
    <circle cx="8" cy="8" r="6" stroke="black" stroke-width="1" fill="red" />
  </svg>
</IconBase>

[大 当使用自定义图标时 IconsOptimizationProvider数字 :

  • 确保 iconName 道具是每个自定义图标独有的以避免相撞,
  • 修改内部的 SVG 内容 IconBase 运行时间可能导致出乎意料的行为.

看看这个 反应操场 故事来学习更多.

图标来源

所有 SVG 图标来自 @ canonical/ ds- 资产 包,是Canonical的Pragma设计系统的一部分.

发展

# Install dependencies
bun install

# Build icon components from source
bun run build

# Run Storybook for development
bun run storybook

# Lint, type check and verify metadata.json is up to date
bun run check

生成图标元数据

metadata.json 持有由视觉模型生成的每个图标的搜索标记 从图标及其名称。 每个条目还存储一个散列 图标的 SVG,所以生成器只调用新图标的模型 已更改, 或还没有标记; 所有其他标记都重新使用 。 图标条目 不再存在.

bun run check (和CI) 失败时 metadata.json 没有同步到 @canonical/ds-assets,所以在撞出软件包后运行生成器:

# Set OPENROUTER_API_KEY in your environment or ignored .env file.
bun run build:metadata

生成器接受支持 OpenAI 兼容聊天的任何端点 结业. 模型 必须支持图像输入。默认情况下,它使用 打开路透器 google/gemma-4-26b-a4b-it数字 :

# Override the OpenRouter model.
bun run build:metadata --model google/gemini-3.1-flash-lite

对于自定义终点,请通过 API 基础 URL 和一个明确的模式:

# Ollama: start the server and download the chosen model beforehand.
bun run build:metadata --base-url http://localhost:11434/v1 --model gemma4:26b

# llama.cpp: start llama-server with your model; use its served model ID.
bun run build:metadata --base-url http://localhost:8080/v1 --model your-served-model-id

自定义端点只使用 METADATA_API_KEY 供应时,否则无 认证头已发送 .

图标默认一次处理 6; 用 --concurrency (或 -j),例如. -j 1 用于慢本地服务器。 120后请求暂停 秒和重试最多2次,有备份,超时,网络 错误、 速率限制和服务器错误 。 增加慢本地模型的超时 --timeout <seconds>的图标 剩余结果被写入,命令退出状态为非零.

每个生成的图标被记录在一条有其标记的单行上. 添加 --verbose (或 -v)还登录模型对绘图的描述及其含义.

被再用标记实现常态化(小写,去字,填字被去掉). 添加 --clean (或 -c)重新生成所有图标的标记.

版本与发布记录

@canonical/svelte-icons 共发布 10 个版本,首次发布于 2025/11/26;过去 12 个月发布了 10 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.0latest2026/10/2317 天前
0.0.92026/01/099 个月前
0.0.82025/12/0511 个月前
0.0.72025/12/0511 个月前
0.0.62025/12/0211 个月前
0.0.52025/12/0211 个月前

关于 @canonical/svelte-icons 的常见问题

@canonical/svelte-icons 是什么?

作为斯维尔特组件的 Canonical 图标

如何安装 @canonical/svelte-icons?

在项目目录运行 npm install @canonical/svelte-icons,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:svelte(^5.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@canonical/svelte-icons 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@canonical/svelte-icons 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@canonical/svelte-icons 可以商用吗?

@canonical/svelte-icons 使用 LGPL-3.0 许可。弱 Copyleft:作为库被调用时通常不要求开源你自己的代码,但修改库本身需以 LGPL 开源;前端打包合并后的适用边界存在不同理解。以上为概括,不构成法律意见,请以许可原文为准。

@canonical/svelte-icons 的下载量有多少?

根据 npm 官方下载统计,@canonical/svelte-icons 在 2026/10/09 – 2026/11/07 这 30 天内被下载 2,397 次,日均约 80 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@canonical/svelte-icons 还在维护吗?

最新版本 0.1.0 发布于 2026/10/23(17 天前);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2025/11/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。