# @aurelienbbn/oxlint-plugin-cloudflare 中文文档

规范地址：https://npmcn.com/package/%40aurelienbbn/oxlint-plugin-cloudflare/

版本：0\.1\.2
npm 元数据更新时间：2026-10-14T14:35:18.817Z
中文译文更新时间：2026-11-07T06:08:19.727Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40aurelienbbn/oxlint-plugin-cloudflare
原文对照：https://npmcn.com/package/%40aurelienbbn/oxlint-plugin-cloudflare/?lang=original
项目主页：https://github.com/aurelienbobenrieth/harness/tree/main/packages/oxlint-plugin-cloudflare#readme
源码仓库：https://github.com/aurelienbobenrieth/harness

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

- 包体积（解压后）：122 kB，7 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^22\.19\.0 \|\| ^24\.11\.0
- 运行依赖：1 个
- peer 依赖：oxlint \>=1\.82\.0 \<2\.0\.0
- 首次发布：2026-09-25T10:27:29.173Z
- 最新版本发布：2026-10-14T14:35:18.439Z
- 近 30 天下载量：2069（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

关于云花板工人、耐用物品和工作流程的自定义克林特规则.

## 安装

```sh
npm install @aurelienbbn/oxlint-plugin-cloudflare
```

也可以使用：`pnpm add @aurelienbbn/oxlint-plugin-cloudflare`、`yarn add @aurelienbbn/oxlint-plugin-cloudflare`、`bun add @aurelienbbn/oxlint-plugin-cloudflare`

## README

# @aurelienbn/oxlint-plugin-cloudflare (英语)

[![npm](https://img.shields.io/npm/v/@aurelienbbn/oxlint-plugin-cloudflare)](https://www.npmjs.com/package/@aurelienbbn/oxlint-plugin-cloudflare) [![downloads](https://img.shields.io/npm/dm/@aurelienbbn/oxlint-plugin-cloudflare)](https://www.npmjs.com/package/@aurelienbbn/oxlint-plugin-cloudflare) [![CI](https://github.com/aurelienbobenrieth/harness/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/aurelienbobenrieth/harness/actions/workflows/ci.yml) [![license](https://img.shields.io/npm/l/@aurelienbbn/oxlint-plugin-cloudflare)](https://github.com/aurelienbobenrieth/harness/blob/main/packages/oxlint-plugin-cloudflare/LICENSE) [![node](https://img.shields.io/node/v/@aurelienbbn/oxlint-plugin-cloudflare)](https://github.com/aurelienbobenrieth/harness/blob/main/packages/oxlint-plugin-cloudflare/package.json)

**7 关于云花板工人、耐用物体和工作流程的克林特规则:检查并通过的bugs `wrangler deploy`,然后在真实流量下失败.**

> \[注\] **释放候选人.** 还没有消费者校正过.

```sh
pnpm add -D @aurelienbbn/oxlint-plugin-cloudflare oxlint   # oxlint >=1.82.0 <2.0.0
```

```json
{
  "jsPlugins": ["@aurelienbbn/oxlint-plugin-cloudflare"],
  "rules": {
    "cloudflare/no-module-scope-request-state": "error",
    "cloudflare/no-interpolated-sql": "error",
    "cloudflare/workflow-deterministic-steps": "error",
    "cloudflare/no-detached-execution-context-method": "error",
    "cloudflare/durable-object-init-concurrency": "error",
    "cloudflare/mysql2-disable-eval": "error",
    "cloudflare/timing-safe-secret-compare": "error"
  }
}
```

无预设. **一个自定义 :** `mysql2-disable-eval` 添加 `disableEval: true` 到选项对象正文;所有其他规则只报告.

## 什么火吗

```ts
const client = new Client(env.HYPERDRIVE.connectionString); // ❌ no-module-scope-request-state
export default {
  async fetch(request, env, ctx) {
    const { waitUntil } = ctx; // ❌ no-detached-execution-context-method: throws "Illegal invocation"
    await env.DB.prepare(`SELECT * FROM users WHERE id = ${id}`).first(); // ❌ no-interpolated-sql
    await env.DB.prepare("SELECT * FROM users WHERE id = ?").bind(id).first(); // ✅
  },
};

class Sync extends WorkflowEntrypoint {
  async run(event, step) {
    await step.do(`sync ${Date.now()}`, async () => {}); // ❌ workflow-deterministic-steps: never replays from cache
    const id = await step.do("make id", async () => crypto.randomUUID()); // ✅
  }
}
```

每项规则的确切触发因素和范围

| 规则 | \* 开火 | 匹配/ QQ 跳过 |
| --- | --- | --- |
| `no-module-scope-request-state` | a TCP 客户端建在模块范围(`pg` `Client`编号 :`Pool`, (中文(简体) ), `postgres()`, mysql2 (英语) `createConnection`编号 :`createPool`编号 :`createPoolCluster`, (中文(简体) ), `drizzle` 从 `node-postgres`编号 :`postgres-js`编号 :`mysql2`); 模块-镜像变量 指定、更新、删除或由 `push`编号 :`set`编号 :`add`/... 在任何函数内 | 只有工人模块:导入 `cloudflare:workers`,或默认导出处理器对象。 QQ 类字段( Dable Object state), Drizzle D1/ HTTP 驱动程序, Prisma( 安全取决于适配器), 不属于 Worker 模块的辅助模块 |
| `no-interpolated-sql` | 模板字义或 `+` 以运行时值连接为 SQL `env.X.prepare` 编号 : `env.X.exec` (另见: `this.env`, (中文(简体) ), `c.env`页:1 `const db = env.X` (别名)或 `<x>.sql.exec` 编号 : `sql.exec`页:1 `const` 持有此 SQL | 内插字和 `const` 字节(表名),标记模板,例如 `` this.sql`...` `` |
| `workflow-deterministic-steps` | `Date.now()`, (中文(简体) ), `Math.random()`, (中文(简体) ), `performance.now()`, (中文(简体) ), `crypto.randomUUID()`, (中文(简体) ), `crypto.getRandomValues()`无参数 `new Date()` 在一个 `step.do` 编号 : `sleep` 编号 : `sleepUntil` 编号 : `waitForEvent` 名称,或 `run()` 外部a `step.do` 回调 | `run(event, step)` 扩展的类 `WorkflowEntrypoint` 从 `cloudflare:workers`。 。 。 `Promise.race` 编号 : `Promise.any` (未选中) 向助手函数传递的步骤 |
| `no-detached-execution-context-method` | `waitUntil` 编号 : `passThroughOnException` 已解结构(包括在参数中),或在无调用的情况下阅读,并存储、通过、返回或放置在对象/阵列中 | ⏭️ `.bind(ctx)`, (中文(简体) ), `.call(ctx)`,可选的电话, 真相检查, 独立 `waitUntil` 导出 `cloudflare:workers` |
| `durable-object-init-concurrency` | 在一个 `DurableObject` 构造器 : `fetch`编辑 `storage.get`编号 :`put`编号 :`list`编号 :`delete`编号 :`transaction`/报警电话,Aync IIFE,或 `this.<asyncMethod>()`,在召回器外;在任意 `blockConcurrencyWhile` 回调 : `fetch` 或I/O方法对 `env` 约束 | qq 同步 `storage.sql.exec` 财务报告和审定财务报表 `storage.kv`晚点再打. `env.MY_DO.get(id)` 在回调中报告,尽管它只建了根 |
| `mysql2-disable-eval` | 用于 mysql2 的选项对象文字 `createConnection` 编号 : `createPool` 编号 : `createPoolCluster` 无 `disableEval`,或具有非字面值 `true` | 工人模块或选项读取 `env.X` (无) `process.env`. QQ 选项带有分布,选项通过标识符或URI传递. 修补插入 `disableEval: true` 只有在财产不存在时 |
| `timing-safe-secret-compare` | `===` 编号 : `!==` 编号 : `==` 编号 : `!=` 一方是或模板嵌入的地方, `env.<NAME>` 与名称匹配 `SECRET`, (中文(简体) ), `TOKEN`, (中文(简体) ), `PASSWORD`, (中文(简体) ), `PASSPHRASE`, (中文(简体) ), `API_KEY`, (中文(简体) ), `PRIVATE_KEY`, (中文(简体) ), `SIGNING_KEY`, (中文(简体) ), `SIGNATURE`, (中文(简体) ), `CREDENTIAL` | 与 `undefined`, (中文(简体) ), `null`, (中文(简体) ), `""`, (中文(简体) ), `typeof`· ; `process.env` |

没有运出,谁拥有它

| 关切 | 拥有者 |
| --- | --- |
| 期待已久的承诺、RPC呼吁和步骤 | 类型 `typescript/no-floating-promises` 在严格的预设中 |
| 陈旧或手写 `Env` 类型 | `wrangler types --check`; 手写 `Env` 没有声音同步触发器 |
| `Date.now()` 在警报中 | 没有规则: `setAlarm(Date.now() + n)` 正确缩写 |
| 产品选择( KV vs D1 vs DO, 队列 vs Workflows) Name | 云花镇 `workers-best-practices` 财务报告和审定财务报表 `durable-objects` 技能 |
| cloudflare接收器外的原始 SQL | `eslint-plugin-sql` `no-unsafe-query` |

**资信:** 每个规则都独立执行来自 Cloudflare 的开发者文档( 工人最佳做法, 持久对象规则, 工作流程规则, D1, 持久对象 SQLite 存储, Hyperdrive 驱动页) 的引导; 没有复制文档文本或代码 .

## 登记的合同库存

从软件包导出 `pnpm catalog`. 规则特定选项和限制在上文和源测试中都有描述.

| 规则/检查 | 触发或审查范围 |
| --- | --- |
| `durable-object-init-concurrency` | 要求持久对象构建器(存储读取、取取取、合成方法或IIFEs)的同步工作在ctx.block ConteneralWhile () 内运行,并禁止在块Conteneral()回调内取取取或绑取调用. |
| `mysql2-disable-eval` | 需要 DisableEval: 在传递到 mysql2 的对象- literal 选项中的真实性 创建 Connection / 创建Pool / 在 Worker 代码中创建PoolCluster . |
| `no-detached-execution-context-method` | 强制解构 waitUntil / pass Trough OnExcusement 从执行语境中, 或通过, 存储, 或者在没有接收器的情况下返回它们 . |
| `no-interpolated-sql` | 无效模板- 升值插入或字符串将运行时间值连接到 SQL 中, 传递到 D1 准备( ) / exec( ) 或 持久对象 sql. exec (); 代替绑定参数 . |
| `no-module-scope-request-state` | 在 Worker 模块范围强制每个请求状态:在模块范围构建的 TCP 数据库客户端(pg, postgres, mysql2, 其 Drizzle 驱动程序),以及从一个函数内部指定或变异的模块范围变量. |
| `timing-safe-secret-compare` | 活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活. |
| `workflow-deterministic-steps` | Forbid Date.now (), Math.random (), perforce.now (), crypto.randomUID (), crypto.getRandomValues () 和 Workflow step names () 中的新日期(), 或Workflow Entrypoint.run () 中任何一步外的地址. do () 回调 . |

### 信用概念

-   [https://developers.cloudflare.com/d1/worker-api/d1-数据库/](https://developers.cloudflare.com/d1/worker-api/d1-database/) (激励;独立执行)
-   [https://developers.cloudflare.com/可持久-objects/api/sqlite-storage-api/ 互联网档案馆的存檔,存档日期2014-12-22](https://developers.cloudflare.com/durable-objects/api/sqlite-storage-api/) (激励;独立执行)
-   [https://developers.cloudflare.com/可持久对象/最佳实践/可持久对象的规则/](https://developers.cloudflare.com/durable-objects/best-practices/rules-of-durable-objects/) (激励;独立执行)
-   [https://developers.cloudflare.com/hyperdrive/examples/connect-to-mysql/mysql-drivers-和-librarys/mysql2/ 互联网档案馆的存檔,存档日期2007-12-2](https://developers.cloudflare.com/hyperdrive/examples/connect-to-mysql/mysql-drivers-and-libraries/mysql2/) (激励;独立执行)
-   [https://developers.cloudflare.com/hyperdrive/examples/接通-postgres/postgres-drivers-和-library/node-postgres/ 互联网档案馆的存檔,存档日期2013-12-21](https://developers.cloudflare.com/hyperdrive/examples/connect-to-postgres/postgres-drivers-and-libraries/node-postgres/) (激励;独立执行)
-   [https://developers.cloudflare.com/工人/最佳做法/工人-最佳做法/](https://developers.cloudflare.com/workers/best-practices/workers-best-practices/) (激励;独立执行)
-   [https://developers.cloudflare.com/workflows/building/rules-of-workflows/ 互联网档案馆的存檔,存档日期2014-12-21](https://developers.cloudflare.com/workflows/build/rules-of-workflows/) (激励;独立执行)

## 常见问题

### @aurelienbbn/oxlint-plugin-cloudflare 是什么？

关于云花板工人、耐用物品和工作流程的自定义克林特规则\.

### 如何安装 @aurelienbbn/oxlint-plugin-cloudflare？

在项目目录运行 npm install @aurelienbbn/oxlint-plugin-cloudflare，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：oxlint（\>=1\.82\.0 \<2\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @aurelienbbn/oxlint-plugin-cloudflare 支持 TypeScript 吗？

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

### @aurelienbbn/oxlint-plugin-cloudflare 支持 ESM 还是 CommonJS？

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

### @aurelienbbn/oxlint-plugin-cloudflare 需要什么版本的 Node\.js？

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

### @aurelienbbn/oxlint-plugin-cloudflare 可以商用吗？

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

### @aurelienbbn/oxlint-plugin-cloudflare 的下载量有多少？

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

### @aurelienbbn/oxlint-plugin-cloudflare 还在维护吗？

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

