# @broberg/gravatar 中文文档

规范地址：https://npmcn.com/package/%40broberg/gravatar/

版本：0\.2\.1
npm 元数据更新时间：2026-08-22T18:30:33.065Z
中文译文更新时间：2026-11-08T16:12:34.542Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40broberg/gravatar
原文对照：https://npmcn.com/package/%40broberg/gravatar/?lang=original
项目主页：https://github.com/broberg-ai/components#readme
源码仓库：https://github.com/broberg-ai/components

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：96.5 kB，20 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：@radix-ui/react-avatar \>=1\.0\.0，preact \>=10\.0\.0，react \>=18\.0\.0
- 首次发布：2026-06-30T06:38:39.391Z
- 最新版本发布：2026-08-22T18:30:32.671Z
- 近 30 天下载量：3005（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

Isomorphic Gravatar helper (SHA-256) + 首字母回落. 无头核心 + React and Preact 适配器组件有3级倒置:上传图片 → Gravatar → 生成首字母.

## 安装

```sh
npm install @broberg/gravatar
```

也可以使用：`pnpm add @broberg/gravatar`、`yarn add @broberg/gravatar`、`bun add @broberg/gravatar`

## README

# @broberg/重力

Gravatar URL和Avatar为舰队首字母缩写. 零运行时间依赖性,同位素.

```bash
npm i @broberg/gravatar
```

```ts
import { gravatarUrl, gravatarLookup, getInitials } from "@broberg/gravatar";

await gravatarUrl("cb@webhouse.dk", { size: 80, default: "404" });
await gravatarLookup("cb@webhouse.dk");   // 'yes' | 'no' | 'unknown'
getInitials("Christian Broberg");          // 'CB'
```

还有船 `@broberg/gravatar/react` 财务报告和审定财务报表 `@broberg/gravatar/preact`。 。 。 .

## `gravatarLookup()` ——三种结果,因为有三种

```ts
const presence = await gravatarLookup("cb@webhouse.dk");
if (presence !== "unknown") cache.set(email, presence);   // never cache a guess
```

| 回应 | 结果 | 含义 |
| --- | --- | --- |
| `404` | `no` | 绝对不是虚构的 |
| `200` | `yes` |  |
| 5xx 抛出 超时 出奇状态 | `unknown` | **不要将此缓存为否** |

**为什么它存在(v0.2.0.** 古老的布林把三个事实折叠成两个:一个503来自Automattic,一个中断的连接都回来了 `false`,其内容如下: _"没有照片"_。 。 。 .

还有你 **缓存** 这个答案,你必须, 或者你要求自动在每一页渲染。 因此,一个十秒打嗝使得一个用户花费了他们的Avatar,直到缓存到期,在呼叫站没有任何信息可以透露. 一个消费者在他们通过这个包裹的那天发现的.

`gravatarExists()` 现有呼叫者保持不变 **他俩还是分不清** 两者都是 `false`。如果存储结果,您会存储每一次失败的猜测。 使用 `gravatarLookup` 任何你缓存的东西.

## `getInitials()` ——字母,而非字符

```ts
getInitials("Lens (verifikation)");   // 'LV'    (was 'L(' before v0.2.0)
getInitials(null, "x@webhouse.dk");   // 'X'     (was 'X@')
getInitials("  ");                    // '??'    (was two spaces)
getInitials("李 明");                  // '李明'
getInitials("José");                  // 'JO'
```

在非字母/非数字,unicode-aware上进行分拆——因此CJK和重音拉丁语作品,只有ASCII的测试套房是永远不会抓到的.

电子邮件分支拿走 **前缀** 在此之前 `@`。这就是它的文件总是声称的;代码读取了整个地址,只看对了,因为大多数地址都是从两个字母开始的.

**邮件在 `name` 插槽工程(v0.2.1).** `getInitials("cb@webhouse.dk")` → `CB`,与 `getInitials(null, "cb@webhouse.dk")` - 因为.. `navn = bruger.navn || bruger.email` 是一个普通的呼叫站,两个论点必须同意。 侦测是保守的: 完全是一个 `@`,两侧无空和白空,所以 `"Anne @ Hansen"` 保持一个名字.

> 0.2.0 得到这个错误并运出它: 名字槽中的每一个地址都出现在TLD的第一个字母中(`cb@webhouse.dk` → `CD`) (中文(简体) ). 本来应该被它抓住的接受标准,在《公约》中也坚持了同样的标准 _电子邮件_ 论点只是——索赔涉及的是普通案件,检验标准涉及的是一种论点,两者都是绿色的.

**众所周知的限制,故意的.** `getInitials("Jens Hansen, direktør")` 返回时 `JD` - 它以标题为姓氏。 在第一个逗号上断线就能修好丹麦人 _"名字,标题"_ 表格和表格 **换行** 同样常见的 _"苏姓,名出"_ 输出。 两会相会相会,相会相会相会,而弦中无所分辨. 独自一人 而不是猜测.

## 核心点是 `async`,目的

`gravatarHash` 财务报告和审定财务报表 `gravatarUrl` 返回承诺,因为使用 `crypto.subtle` - 在Node, Bun, Deno, 工人中存在的一个散列API _财务报告和审定财务报表_ 浏览器.

仅限节点的消费者期望同步 `createHash` 将惊讶。 这就是同位素税,这是刻意的:替代办法是每个消费者有两个代码路径和一个捆绑条件.

## API 密码

| 导出 |  |
| --- | --- |
| `gravatarHash(email)` | SHA-256 修饰后,小写地址 |
| `gravatarUrl(email, { size?, default? })` | 完整图像 URL |
| `gravatarLookup(email, size?)` | `'yes' | 'no' | 'unknown'` |
| `gravatarExists(email, size?)` | `boolean` 损失;见上文 |
| `getInitials(name?, email?)` | 最多两个大写字符,或 `'??'` |

## 常见问题

### @broberg/gravatar 是什么？

Isomorphic Gravatar helper \(SHA-256\) \+ 首字母回落\. 无头核心 \+ React and Preact 适配器组件有3级倒置:上传图片 → Gravatar → 生成首字母\.

### 如何安装 @broberg/gravatar？

在项目目录运行 npm install @broberg/gravatar，或使用 pnpm add / yarn add / bun add。

### @broberg/gravatar 支持 TypeScript 吗？

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

### @broberg/gravatar 支持 ESM 还是 CommonJS？

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

### @broberg/gravatar 可以商用吗？

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

### @broberg/gravatar 的下载量有多少？

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

### @broberg/gravatar 还在维护吗？

最新版本 0\.2\.1 发布于 2026/08/23（2 个月前）；至今共发布 3 个版本，其中过去 12 个月发布了 3 个；首次发布于 2026/06/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

