@aurelienbbn/oxlint-plugin-cloudflare

中文文档
0.1.2发布于 2026/10/14MITTypeScriptES Module构建来源已验证近 30 天下载 2069

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

中文使用文档
文档目录3 节
  1. 什么火吗
  2. 登记的合同库存
  3. 信用概念

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

npm downloads CI license node

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

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

pnpm add -D @aurelienbbn/oxlint-plugin-cloudflare oxlint   # oxlint >=1.82.0 <2.0.0
{
  "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 到选项对象正文;所有其他规则只报告.

什么火吗

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-statea 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-stepsDate.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-methodwaitUntil 编号 : 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接收器外的原始 SQLeslint-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-stepsForbid Date.now (), Math.random (), perforce.now (), crypto.randomUID (), crypto.getRandomValues () 和 Workflow step names () 中的新日期(), 或Workflow Entrypoint.run () 中任何一步外的地址. do () 回调 .

信用概念

版本与发布记录

@aurelienbbn/oxlint-plugin-cloudflare 共发布 3 个版本,首次发布于 2026/09/25;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.2latest2026/10/1424 天前
0.1.12026/09/251 个月前
0.1.02026/09/251 个月前

关于 @aurelienbbn/oxlint-plugin-cloudflare 的常见问题

@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 和提交记录判断。