@ultraviolet/ui

中文文档
3.29.3发布于 2026/11/03Apache-2.0TypeScriptESM + CJS构建来源已验证

紫外线UI

中文使用文档
文档目录7 节
  1. 开始
  2. 使用
  3. 从V2迁移到V3
  4. 主题提供者
  5. 风格
  6. 文档
  7. 贡献

紫外线UI

npm version

Ultraviolet UI是一组React组件和实用工具,用于构建快速的应用程序。

开始

$ pnpm add @ultraviolet/ui @ultraviolet/themes

您还需要通过添加以下内容来导入项目中的字体:

<link href="https://fonts.cdnfonts.com/css/inter?styles=29139,29137,29140" rel="stylesheet" />
<link href="https://fonts.cdnfonts.com/css/jetbrains-mono-2?styles=156604" rel="stylesheet" />
<link href="https://fonts.cdnfonts.com/css/space-grotesk?styles=24816,24815,24817" rel="stylesheet" />

或者如果你想为它安装软件包,你可以添加:

$ pnpm add @ultraviolet/fonts

并将其导入到您的项目中:

import '@ultraviolet/fonts'

使用

要使库正常工作,需要将应用程序包装为 ThemeProvider 组件从 @ultraviolet/themes。可以进入 theme 对象,只需直接从 @ultraviolet/themes 库:

import { theme } from '@ultraviolet/themes'

您还需要导入组件的样式,使它们具有正确的样式。

import { ThemeProvider, theme } from '@ultraviolet/themes'
import { Button } from '@ultraviolet/ui'
import '@ultraviolet/ui/styles' // <- components style

const App = () => (
  <ThemeProvider theme={theme}>
    <Button onClick={() => console.log('clicked')}>Click Me</Button>
  </ThemeProvider>
)

注意: 要轻松生成自己的主题,您可以检查 主题发电机.

从V2迁移到V3

随着从 @ultraviolet/ui 2.0.0 来 @ultraviolet/ui 3.0.0,引入了几个核心更改。这些变化是由于样式的转变 Emotion 来 vanilla-extract.

主题提供者

为确保库正常工作,必须将应用程序包装为 ThemeProvider 组件。从 @ultraviolet/themes 或者 @ultraviolet/ui (取代之前的 Emotion的提供者)。

如果你的应用仍然使用 Emotion,你可以组合这两个主题提供商:

import { ThemeProvider as EmotionThemeProvider } from '@emotion/react'
import { consoleLightTheme, ThemeProvider as UVThemeProvider } from '@ultraviolet/themes'

const App = () => (
  <UVThemeProvider theme={consoleLightTheme}>
    <EmotionThemeProvider theme={consoleLightTheme}>{children}</EmotionThemeProvider>
  </UVThemeProvider>
)

风格

为了确保样式被应用,在应用的根目录中导入组件样式:

import '@ultraviolet/ui/styles'

来取代 normalize() (这是用在情感上的),你现在可以导入一个具有相同效果的全局样式:

之前:

import { Global } from '@emotion/react'
import { normalize } from '@ultraviolet/ui'
import { ThemeProvider } from '@emotion/react'

const App = () => (
  <ThemeProvider theme={theme}>
      <Global styles={css`${normalize()}`}>
      <MyApp />
  </ThemeProvider>
)

后:

import { ThemeProvider } from '@ultraviolet/themes'
import '@ultraviolet/themes/global'

const App = () => (
  <ThemeProvider theme={theme}>
    <MyApp />
  </ThemeProvider>
)

文档

付款我们 文档的网站.

贡献

📝您可以参与开发和 开始贡献 到它。

版本与发布记录

@ultraviolet/ui 共发布 361 个版本,首次发布于 2023/06/20;过去 12 个月发布了 66 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.29.3latest2026/11/03今天
3.29.22026/10/304 天前
3.29.12026/10/295 天前
3.29.02026/10/285 天前
3.28.02026/10/2112 天前
3.27.02026/10/1617 天前

其他发布通道:beta → 3.0.0-beta.29。

关于 @ultraviolet/ui 的常见问题

@ultraviolet/ui 是什么?

紫外线UI

如何安装 @ultraviolet/ui?

在项目目录运行 npm install @ultraviolet/ui,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(18.x || 19.x)、react-dom(18.x || 19.x)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@ultraviolet/ui 支持 TypeScript 吗?

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

@ultraviolet/ui 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@ultraviolet/ui 需要什么版本的 Node.js?

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

@ultraviolet/ui 可以商用吗?

@ultraviolet/ui 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@ultraviolet/ui 还在维护吗?

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