@fluentui/react-icons-font-subsetting-webpack-plugin

中文文档
2.0.346发布于 2026/11/14MITTypeScriptCommonJS近 30 天下载 4901

Webpack 插件,用于子集 @fluentui/react-icons使用的图标字体,这些图标是使用图标的.

中文使用文档
文档目录11 节
  1. 支持的导入模式
  2. 1. 使用 fluentIconFont 条件
  3. 2. 使用原子弹从 @fluentui/react-icons/fonts/*
  4. 3. 使用无头原子从 @fluentui/react-icons/headless/fonts/*
  5. 使用量
  6. 与 fluentIconFont 条件
  7. 原子导入( 不需要条件名称)
  8. 用红包
  9. 选项
  10. onDuplicateInstances
  11. 开发检查

@fluentui/ react-icons-font-subsetting-webpack-plugin (英语)

此软件包包括一个插件 webpack@>=5.0.0 财务报告和审定财务报表 @rspack/core@>=2.0.0 以子集图标字体文件 @fluentui/react-icons 当使用基于字体的图标执行时.

若为 optimization.usedExports 启用(默认情况下为 production 模式),此插件将子集字体文件,只包含您构建时实际使用的格言.

支持的导入模式

该插件支持以下导入模式: @fluentui/react-icons数字 :

1. 使用 fluentIconFont 条件

// Uses font implementation via resolve.conditionNames
import { AddRegular, DeleteFilled } from '@fluentui/react-icons';

2. 使用原子弹从 @fluentui/react-icons/fonts/*

// Direct atomic imports - no conditionNames required
import { AddRegular, AddFilled } from '@fluentui/react-icons/fonts/add';
import { DeleteRegular } from '@fluentui/react-icons/fonts/delete';

原子进口为使用少量图标的应用提供了更好的摇树和更快的建设时间.

3. 使用无头原子从 @fluentui/react-icons/headless/fonts/*

// Headless font atoms — no Griffel runtime.
// You MUST also import the headless font CSS so the @font-face declarations and
// font files enter the module graph (the headless atoms don't import them):
import '@fluentui/react-icons/headless/fonts/styles.css';
import { AddRegular, AddFilled } from '@fluentui/react-icons/headless/fonts/add';

该插件根据您实际使用的无头图标,子集了标准API所使用的相同的共享字体文件. 因为字体文件通过 styles.css,您的配置需要CSS加载器(例如. css-loader)所以说 url(...) 将引用解入网络包资产.

提示 : 你不必用手书写无原子头进口品. 此插件的对齐 @fluentui/react-icons-atomic-webpack-loader 使用 { headless: true, iconVariant: 'fonts' } ——它改写了平板桶进口(import { AddFilled } from '@fluentui/react-icons')变为无头字体原子,然后由此插件分集。 您仍然导入 @fluentui/react-icons/headless/fonts/styles.css 你自己来.

该插件为原子加载器的查询- 意识 moduleGranularity: 'icon' 模式。 排队模块通过它们 在精确选定导出时, 无查询物理路径. 使用协调加载器/插件释放:两个包执行a 汇编一级 v1 选择者能力握手并失败构建 当支持缺失或不兼容时生成不正确的子集.

使用量

与 fluentIconFont 条件

// webpack.config.js
const {
  default: FluentUIReactIconsFontSubsettingPlugin,
} = require('@fluentui/react-icons-font-subsetting-webpack-plugin');

module.exports = {
  module: {
    rules: [
      // Treat the font files as webpack assets
      {
        test: /\.(ttf|woff2?)$/,
        type: 'asset',
      },
    ],
  },
  resolve: {
    // Include 'fluentIconFont' to use the font implementation of the Fluent icons
    conditionNames: ['fluentIconFont', 'import'],
  },
  plugins: [
    // Include this plugin
    new FluentUIReactIconsFontSubsettingPlugin(),
  ],
};

原子导入( 不需要条件名称)

// webpack.config.js
const {
  default: FluentUIReactIconsFontSubsettingPlugin,
} = require('@fluentui/react-icons-font-subsetting-webpack-plugin');

module.exports = {
  module: {
    rules: [
      // Treat the font files as webpack assets
      {
        test: /\.(ttf|woff2?)$/,
        type: 'asset',
      },
    ],
  },
  plugins: [
    // Include this plugin
    new FluentUIReactIconsFontSubsettingPlugin(),
  ],
};

用红包

插件是捆绑-不可知的,在rspack中工作不变——相同的配置适用:

// rspack.config.js
const {
  default: FluentUIReactIconsFontSubsettingPlugin,
} = require('@fluentui/react-icons-font-subsetting-webpack-plugin');

module.exports = {
  module: {
    rules: [
      {
        test: /\.(ttf|woff2?)$/,
        type: 'asset',
      },
    ],
  },
  plugins: [new FluentUIReactIconsFontSubsettingPlugin()],
};

两只棕榈花特有说明:

  • 对于无头导入模式,使用 rspack.CssExtractRspackPlugin 改为 mini-css-extract-plugin,与rspack不相容.
  • webpack 财务报告和审定财务报表 @rspack/core 被宣布为 选项 端点依赖性,所以只需要安装实际使用的捆绑器.

橡胶包 >=2.0.0 是因为子设定读取模块图,并且 moduleGraph.getUsedExports() 暴露在JS API的urspack 2.0.

在红外线上 2.0.x 有一个限制: moduleGraph.getProvidedExports() 仅仅降落在2.1.0, 它让插件子集图标通过一个 名称空间导入 (单位:千美元)import * as Icons from '@fluentui/react-icons/fonts/…') (中文(简体) ). 因为这些图标不可能是 确定, 每个 受影响的软件包中的字体是未设置的子集——而不仅仅是命名空间导入的 自己的模块——因为从软件包所剩入的入件中进行子设定会降低格来法的命名空间 导入实际使用。 发生这种情况时, 自动提醒软件包名称 。 命名进口—— 普通案件——不受影响,完全归集。 升级到 rspack >=2.1.0 完全覆盖.

选项

onDuplicateInstances

'warn' | 'error'默认值 'warn'。 。 。 .

插件子集对一个已解决 @fluentui/react-icons 软件包实例。 当字体模块 从多个已安装副本解析 —— 虚拟存储中的对等依赖性变体将做到这一点 不存在任何版本冲突——释放出字体资产不能安全归属于一个连贯的来源.

插件在检查字体资产所有权之前检测多个参与副本, 全部离开 字体非子集, 使每个格莱弗仍然生成, 并用其中的路径警告 。 设定 'error' 失败 改为:

new FluentUIReactIconsFontSubsettingPlugin({ onDuplicateInstances: 'error' });

要重新进行子调试, 复制件会与捆绑器一起折叠到一个实例中 resolve.alias 条目. 请注意,这也会将每份拷贝都绑在单一的React和Griffel实例上.

使用无害环境管理 import 和通用JS系统 require() 从同一安装中不计为两份. 它们的用过的导出是合并的,每个被排放的字体资产都是子集一次.

开发检查

运行 yarn nx run react-icons-font-subsetting-webpack-plugin:test 单位,类型, 和网络包装/软件包集成覆盖.

运行 yarn nx run react-icons-font-subsetting-webpack-plugin:test:render 联 合 国 本地化全/子集字体浏览器检查 。 它需要剧作家铬 (单位:千美元)yarn playwright install chromium并检查标准/无头渲染, LTR/RTL 上下文,以及桌面/移动取景口. 屏幕截图被写入到 tmp/localized-font-render 在寄存器根处.

版本与发布记录

@fluentui/react-icons-font-subsetting-webpack-plugin 共发布 155 个版本,首次发布于 2022/05/17;过去 12 个月发布了 36 个版本。

版本发布日期距今
2.0.346latest2026/11/142 天前
2.0.3452026/10/3116 天前
2.0.3442026/10/101 个月前
2.0.3432026/09/261 个月前
2.0.3422026/09/251 个月前
2.0.3412026/09/122 个月前

其他发布通道:rc → 2.0.173-rc.9,prerelease → 2.0.324-alpha.1。

关于 @fluentui/react-icons-font-subsetting-webpack-plugin 的常见问题

@fluentui/react-icons-font-subsetting-webpack-plugin 是什么?

Webpack 插件,用于子集 @fluentui/react-icons使用的图标字体,这些图标是使用图标的.

如何安装 @fluentui/react-icons-font-subsetting-webpack-plugin?

在项目目录运行 npm install @fluentui/react-icons-font-subsetting-webpack-plugin,或使用 pnpm add / yarn add / bun add。

@fluentui/react-icons-font-subsetting-webpack-plugin 支持 TypeScript 吗?

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

@fluentui/react-icons-font-subsetting-webpack-plugin 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@fluentui/react-icons-font-subsetting-webpack-plugin 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=14.5.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@fluentui/react-icons-font-subsetting-webpack-plugin 可以商用吗?

@fluentui/react-icons-font-subsetting-webpack-plugin 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fluentui/react-icons-font-subsetting-webpack-plugin 的下载量有多少?

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

@fluentui/react-icons-font-subsetting-webpack-plugin 还在维护吗?

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