@douyinfe/semi-vite-plugin

中文文档
2.105.0发布于 2026/11/12MITTypeScriptCommonJS近 30 天下载 3059

用于Semi Design自定义主题,替换前缀等的vite插件.

中文使用文档
文档目录13 节
  1. 导言
  2. 使用量
  3. 安装
  4. 自定义主题
  5. 替换 CSS 选择器的前缀
  6. 用 CSS 层环绕输出样式
  7. API 密码
  8. 半主题( 选项)
  9. 如何运作
  10. 财务问题
  11. 为什么班名还保留下来 semi-* 内 vite dev ? 吗?
  12. Vite 8 打印出一个关于 optimizeDeps.esbuildOptions
  13. 相关

用于Semi Design自定义主题,替换前缀等的vite插件.

导言

该插件为带有Vite的"半设计"所设计,提供两个主要能力:

  • 自定义主题
  • 替换 CSS 选择器的前缀

注:插件通过软件包路径检测出半相关依赖性. 它支持两者 @douyinfe/semi-ui 和版本后缀软件包 @douyinfe/semi-ui-19 (亦为 semi-icons) (中文(简体) ).

使用量

安装

安装 @douyinfe/semi-vite-plugin 作为一种发展依赖:

npm install --save-dev @douyinfe/semi-vite-plugin
# or
yarn add --dev @douyinfe/semi-vite-plugin
# or
pnpm add -D @douyinfe/semi-vite-plugin

自定义主题

Semi Design使用Scs变量来取出上千个 Design Tokens. 您可以替换 通过此插件实现主题定制的这些符号 . 更多信息

您可以通过三种方式自定义主题:

  • 由 Semi DSM 生成 npm 包
  • 您工程中的本地 Scs 文件
  • 将密钥值对参数传递到插件

优先从低到高.

通过 npm 软件包

完成定制后 半设计系统,半DSM 将生成 npm 软件包,然后像这样使用:

// vite.config.ts
import { defineConfig } from 'vite';
import semiTheming from '@douyinfe/semi-vite-plugin';

export default defineConfig({
    plugins: [
        semiTheming({
            theme: '@semi-bot/semi-theme-yours',
        }),
    ],
});

通过本地 Scs 文件

您可以检查您在 半网站。 。 。 .

步骤1: 添加本地文件

// local.scss
$font-size-small: 16px;

第2步: 配置 vite

// vite.config.ts
import path from 'path';
import { defineConfig } from 'vite';
import semiTheming from '@douyinfe/semi-vite-plugin';

export default defineConfig({
    plugins: [
        semiTheming({
            include: path.resolve(__dirname, 'local.scss'),
        }),
    ],
});

通过参数

// vite.config.ts
import { defineConfig } from 'vite';
import semiTheming from '@douyinfe/semi-vite-plugin';

export default defineConfig({
    plugins: [
        semiTheming({
            variables: {
                '$font-size-small': '16px',
            },
        }),
    ],
});

替换 CSS 选择器的前缀

Semi Design所使用的 CSS 选择器的前缀为 semi 默认 (例如:. .semi-button) (中文(简体) ). 您可以通过此插件替换前缀 :

// vite.config.ts
import { defineConfig } from 'vite';
import semiTheming from '@douyinfe/semi-vite-plugin';

export default defineConfig({
    plugins: [
        semiTheming({
            prefixCls: 'custom',
        }),
    ],
});

然后获得替换的CSS选择器(例如. .custom-button) (中文(简体) ).

用 CSS 层环绕输出样式

// vite.config.ts
import { defineConfig } from 'vite';
import semiTheming from '@douyinfe/semi-vite-plugin';

export default defineConfig({
    plugins: [
        semiTheming({
            cssLayer: true,
        }),
    ],
});

API 密码

半主题( 选项)

财产类型默认说明
themestring | { name?: string }- 说吧由 Semi DSM 生成的自定义主题包名 .
prefixClsstringsemiCSS类名的前缀.
variablesRecord<string, string | number>{}Scs变量的键值对.
includestring- 说吧用于在主题变量后注入 Scs 文件的绝对路径 .
cssLayerbooleanfalse何时 true,将最后编译的 CSS 包成 @layer semi { ... }。 。 。 .
omitCssbooleanfalse评论 .css 在半包内导入。 当集成框架无法从中导入全球CSS时有用 node_modules 直接说.

如何运作

  1. CSS → SCSS 重写: 拦截请求 @douyinfe/semi-(ui|icons|foundation)/lib/**/*.css,将后缀切换为 .scss 并读取原始 Sass 源.
  2. 主题注入: 插入主题 index.scss 编号 : global.scss 编号 : animation.scss 编号 : local.scss / 用户提供的变量和 include 文档,加 $prefix 和(可选) @layer semi { ... } 包装.
  3. Sass 汇编: 用 sass.compileString,解决 ~package/... 按节点导入 原始树 .scss 文档.
  4. 前缀补丁: 对于匹配的文件 @douyinfe/semi-*/.../env.js,重写 BASE_CLASS_PREFIX 常数到配置 prefixCls实现同样的目标 替换 Vite 的 dev-mode dep 预捆绑的工作 (.vite/deps页:1 esbuild 插件通过 optimizeDeps.esbuildOptions.plugins 改为 在预捆绑时间也重写嵌入模块.
  5. 删除Cs: 发表可选评论 .css 半包内导入 他们没找到绑匪.

财务问题

为什么班名还保留下来 semi-* 内 vite dev? 吗?

虚拟预捆绑 node_modules 软件包输入 .vite/deps 使用建设 (或以Vite 8+为倒数. 何时 prefixCls 设置,此插件插入一个 新建重写相关插件 env.js 预捆绑内的文件. 如果你之前开始 vite 一次没有插件( 或者有不同的插件) prefixCls),你可能有一个 stale .vite/deps 缓存。 停止 dev 服务器 运行 rm -rf node_modules/.vite 迫使一个干净的再捆绑.

Vite 8 打印出一个关于 optimizeDeps.esbuildOptions

Vite 8 切换到 Rolldown 进行分解预拆, 现在更喜欢 optimizeDeps.rolldownOptions。该插件仍然使用 optimizeDeps.esbuildOptions 用于与 Vite 3 的广泛兼容性; 滚动 所以警告是无害的 并且前缀 重写仍然正确 .

版本与发布记录

@douyinfe/semi-vite-plugin 共发布 12 个版本,首次发布于 2026/05/20;过去 12 个月发布了 12 个版本。

版本发布日期距今
2.105.0latest2026/11/121 天前
2.104.02026/10/091 个月前
2.103.02026/09/012 个月前
2.102.02026/07/313 个月前
2.101.12026/07/203 个月前
2.101.02026/07/024 个月前

关于 @douyinfe/semi-vite-plugin 的常见问题

@douyinfe/semi-vite-plugin 是什么?

用于Semi Design自定义主题,替换前缀等的vite插件.

如何安装 @douyinfe/semi-vite-plugin?

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

@douyinfe/semi-vite-plugin 支持 TypeScript 吗?

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

@douyinfe/semi-vite-plugin 支持 ESM 还是 CommonJS?

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

@douyinfe/semi-vite-plugin 可以商用吗?

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

@douyinfe/semi-vite-plugin 的下载量有多少?

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

@douyinfe/semi-vite-plugin 还在维护吗?

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