# @block65/webcrypto-web-push 中文文档

规范地址：https://npmcn.com/package/%40block65/webcrypto-web-push/

版本：2\.0\.0
npm 元数据更新时间：2026-09-15T09:40:25.165Z
中文译文更新时间：2026-11-08T07:08:47.154Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40block65/webcrypto-web-push
原文对照：https://npmcn.com/package/%40block65/webcrypto-web-push/?lang=original
源码仓库：https://github.com/block65/webcrypto-web-push

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

- 包体积（解压后）：17.3 kB，29 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.0\.0
- 运行依赖：1 个
- 首次发布：2023-04-22T08:28:59.652Z
- 最新版本发布：2026-09-03T11:44:35.988Z
- 近 30 天下载量：885440（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：9（近 12 个月 1 个）

## 中文简介

使用Web Push协议(RFC 8291)和Web Crypto API(与NodeJS, Cloudflare Workers, Bun和Deno合作)发送通知

## 安装

```sh
npm install @block65/webcrypto-web-push
```

也可以使用：`pnpm add @block65/webcrypto-web-push`、`yarn add @block65/webcrypto-web-push`、`bun add @block65/webcrypto-web-push`

## README

# @block65/webcrypto-web-push (英语)

使用 Web Push 协议和 Web Crypto API 发送通知( 使用 Web Push 协议和 Web Crypto API 工作) 节点JS、Cloudflare工人、邦和德诺)

信件被加密为 `aes128gcm` 二. 说明 [RFC 8291 (韩语)](https://www.rfc-editor.org/rfc/rfc8291),并用 自愿援助 `vapid` 计划从 [RFC 8292 (英语)](https://www.rfc-editor.org/rfc/rfc8292)两者都得到 当前推取服务,包括苹果.

每条消息都被加到一个常数 4096 octets, 所以密码的长度是 不透露平话长度,身体在大小范围内保持一推 服务必须接受。 因此,最大有效载荷为3993字节. 订阅端点必须是 `https`。 。 。 .

## 安装

使用 pnpm :

```
pnpm add @block65/webcrypto-web-push
```

使用 npm :

```
npm install @block65/webcrypto-web-push
```

## 配置

### 字体

> **说明** 这是一套无害环境管理方案。 如果您使用 Typescript, 您需要 设置 `moduleResolution` 改为 `node16`, (中文(简体) ), `nodenext` 或者说 `bundler` 以达到 解决软件包导出.

## 使用量

```typescript
import {
  buildPushPayload,
  type PushSubscription,
  type PushMessage,
  type VapidKeys,
} from '@block65/webcrypto-web-push';

// `env` could be `process.env` or `import.meta.env` depending
// on your platform or build tooling
const vapid: VapidKeys = {
  subject: env.VAPID_SUBJECT,
  publicKey: env.VAPID_SERVER_PUBLIC_KEY,
  privateKey: env.VAPID_SERVER_PRIVATE_KEY,
};

// Obtained from the client using PushManager subscribe() method:
// https://developer.mozilla.org/en-US/docs/Web/API/PushManager/subscribe
const subscription: PushSubscription = {
  endpoint: 'https://fcm.googleapis.com/fcm/send/...',
  expirationTime: null,
  keys: {
    p256dh: '...',
    auth: '...',
  },
};

const message: PushMessage = {
  data: "You've got mail!",
  options: {
    ttl: 60,
  },
};

const payload = await buildPushPayload(message, subscription, vapid);

// send the payload to the subscription endpoint using your favourite HTTP client
const res = await fetch(subscription.endpoint, payload);

console.log(res.status); // 201
```

## 从1.x升级

API不变. 1.x版本发送了遗产 `aesgcm` 内容编码和 草案 `WebPush` 授权计划,苹果公司均不接受. 消费者需要 `aesgcm` 编码应该停留在1.x上.

## 许可证

这个包裹根据麻省理工学院的许可证获得许可. 更多请参见 LICENSE 文件 资料.

## 常见问题

### @block65/webcrypto-web-push 是什么？

使用Web Push协议\(RFC 8291\)和Web Crypto API\(与NodeJS, Cloudflare Workers, Bun和Deno合作\)发送通知

### 如何安装 @block65/webcrypto-web-push？

在项目目录运行 npm install @block65/webcrypto-web-push，或使用 pnpm add / yarn add / bun add。

### @block65/webcrypto-web-push 支持 TypeScript 吗？

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

### @block65/webcrypto-web-push 支持 ESM 还是 CommonJS？

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

### @block65/webcrypto-web-push 需要什么版本的 Node\.js？

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

### @block65/webcrypto-web-push 可以商用吗？

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

### @block65/webcrypto-web-push 的下载量有多少？

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

### @block65/webcrypto-web-push 还在维护吗？

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

