@clipboard-health/oxlint-config

中文文档
5.1.8发布于 2026/11/05MITTypeScriptCommonJS近 30 天下载 3.8万

共享 Clippboard 健康存储器的 Oxlint 配置 .

中文使用文档
文档目录11 节
  1. 目录
  2. 安装
  3. 使用量
  4. 类型脚本配置
  5. JSON 配置
  6. 快速运行
  7. 严格的预设
  8. 类别
  9. 什么是共享的
  10. 切换倒计时政策
  11. 故意残疾规则

@clipboard-health/oxlint-配置

共享 氧化剂 剪贴板健康存储器的配置 .

目录

安装

npm install @clipboard-health/oxlint-config

配置包包含 @clipboard-health/oxlint-plugin 用于使用剪贴板的预设 习惯规则.

使用 frontend 预设还必须安装 oxlint-plugin-react-doctor >= 0.9.12。 。 。 .

要求数 oxlint >= 1.68.0: 配置引用规则, 旧的克林特版本不注册, 这失败的配置直接解析 .

使用量

当Repo需要添加剂成分时使用包的TypeScript帮助器. 奥克林特的内置 extends 用于简单的继承, 但它不会让回购安全附加 plugins, (中文(简体) ), overrides,而类似的数组字段则不重新指定共享值.

类型脚本配置

创建一个 oxlint.config.ts 在您的还原根中:

import {
  base,
  createOxlintConfig,
  customRules,
  typeAware,
  vitest,
} from "@clipboard-health/oxlint-config";
import { defineConfig } from "oxlint";

export default defineConfig(
  createOxlintConfig({
    localConfig: {
      categories: {
        correctness: "error",
        nursery: "off",
        pedantic: "error",
        perf: "error",
        restriction: "error",
        style: "off",
        suspicious: "error",
      },
      ignorePatterns: [".agents", "coverage/", "node_modules/"],
      options: {
        denyWarnings: true,
        typeAware: true,
        typeCheck: true,
      },
      rules: {
        "vitest/require-test-timeout": "off",
      },
      settings: {
        node: {
          version: ">=24.14.1",
        },
      },
    },
    presets: [base, customRules, typeAware, vitest],
  }),
);

可用的预设 :

  • base
  • contractFixtures
  • customRules
  • fast (见 快速运行(中文(简体) )
  • frontend
  • react
  • jest
  • strict 财务报告和审定财务报表 strictTypeAware (选入;见 严格的预设(中文(简体) )
  • typeAware
  • vitest

合并行为 :

  • plugins, (中文(简体) ), jsPlugins, (中文(简体) ), overrides,以及 ignorePatterns 附加顺序
  • rules, (中文(简体) ), settings, (中文(简体) ), options, (中文(简体) ), categories, (中文(简体) ), env,以及 globals 将左右合并
  • localConfig 当密钥冲突时总是胜过预设值

对于反应应用程序,由独立程序组成 frontend 与存储器的测试运行器相关的策略 :

import { createOxlintConfig, frontend, typeAware, vitest } from "@clipboard-health/oxlint-config";
import { defineConfig } from "oxlint";

export default defineConfig(
  createOxlintConfig({
    localConfig: {
      ignorePatterns: ["coverage/"],
    },
    presets: [frontend, typeAware, vitest],
  }),
);

保存仓库架构规则、导入限制和 JavaScript 外掛程式 localConfig。 。 。 .

base 是全组织通用的JavaScript和TypeScript政策. frontend 这是 独立前端应用程序政策,包括React,可访问性和浏览器配置 JavaScript规则. typeAware 包含规则 需要Oxlint的 --type-aware 模式,以及 vitest 添加完整的 Vitest 策略 。 将特定存储器的例外保留在 localConfig。 。 。 .

frontend 注册内置 react, (中文(简体) ), jsx-a11y, (中文(简体) ), import, (中文(简体) ), oxc, (中文(简体) ), typescript,以及 unicorn 插件 . typeAware 登记册 typescript,包括由另一个 插件预设无 base。 。 。 .

[大 从省略这些插件注册的版本升级可以曝光已存在的 lint 违反情况。 升级时运行正常和有类型意识的线条,并允许足够的 CI 跑车内存 用于新激活的类型认识分析。 现有的重新登记可以保留.

JSON 配置

创建一个 .oxlintrc.json 在您的还原根中:

{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "extends": ["./node_modules/@clipboard-health/oxlint-config/src/base.json"],
  "categories": {
    "correctness": "error",
    "nursery": "off",
    "pedantic": "error",
    "perf": "error",
    "restriction": "error",
    "style": "off",
    "suspicious": "error"
  },
  "ignorePatterns": [".agents", "coverage/", "node_modules/"],
  "options": {
    "denyWarnings": true,
    "reportUnusedDisableDirectives": "error",
    "typeAware": true,
    "typeCheck": true
  },
  "settings": {
    "node": {
      "version": ">=24.14.1"
    }
  }
}

只有在简单的继承足够的时候才使用JSON. 贾森 extends 仍然为共享预设工作,但repo- local 阵列字段如 plugins 财务报告和审定财务报表 overrides 将不会获得由 createOxlintConfig。 。 。 .

对于使用Vitest的重置,从 vitest.json 改为 base.json 包含vitest插件和规则 :

{
  "extends": ["./node_modules/@clipboard-health/oxlint-config/src/vitest.json"]
}

视需要取代共同规则:

{
  "extends": ["./node_modules/@clipboard-health/oxlint-config/src/base.json"],
  "rules": {
    "no-console": "off"
  }
}

快速运行

base 财务报告和审定财务报表 frontend 启用 reportUnusedDisableDirectives: "error",哪个旗帜 oxlint-disable 财务报告和审定财务报表 eslint-disable 评论不再压制任何东西。 因此,默认配置是 慢一点 此选项仅在完整, 类型意识运行时精确: 没有类型信息, typescript/* 规则不能开火,所以他们的指示看起来没有用。 这个 fast 预设扩展 默认设置选项到 "off" 用于快速的非类型本地和编辑运行.

配置options.reportUnusedDisableDirectives用于
默认( e)base 或者说 frontend(中文(简体) )"error"完整型号的 Lint 运行和 CI
默认 + fast"off"快速的非类型本地和编辑器运行

fast 设置其他的,所以这两个配置是完全相同的。 写最后一首 presets· ; localConfig 如果一个寄存器设置了选项本身, 仍然会获胜 .

存储器保存其规则 oxlint.config.ts 并从它中得来快的猜想 一个编辑规则的地方 :

// oxlint.config.ts
import { base, createOxlintConfig, typeAware } from "@clipboard-health/oxlint-config";
import { defineConfig } from "oxlint";

export default defineConfig(
  createOxlintConfig({
    presets: [base, typeAware],
  }),
);
// oxlint.config.fast.ts
import { fast } from "@clipboard-health/oxlint-config";
import { defineConfig } from "oxlint";

import defaultConfig from "./oxlint.config.ts";

export default defineConfig({ extends: [defaultConfig], ...fast });
{
  "scripts": {
    "lint": "oxlint --type-aware --type-check",
    "lint:fast": "oxlint --config oxlint.config.fast.ts"
  }
}

lint 负载 oxlint.config.ts 并使用未使用的指导性报告方式运行类型意识规则. lint:fast 选择快速配置并省略 --type-aware,所以请 typeAware 预设规则做 别跑 保留 typeAware 财务报告和审定财务报表 typeCheck 从配置选项中选择 lint 命令行, 因此,快速配置不需要覆盖它们.

杰森号 extends 进入点 base.json 包含选项; 设置 options.reportUnusedDisableDirectives 改为 "off" 在为快速配置扩展后.

严格的预设

这些规则捕捉到真正的bug,但是在遗留的代码中经常会起火,所以它们被选入. 收养 寄存器 : 添加预设, 然后在同一更改中压制已有的违规内容如此新 代码满足了栏.

预设规则接头
strict@clipboard-health/no-ambiguous-positional-parameters两个或两个以上位置参数,其中两个共享一个类型(呼叫者可以互换)或一个是布尔(在呼叫站点无法读取). 具有单一参数的函数是免责的,测试文件也是如此.
strictTypeAwaretypescript/strict-boolean-expressions核实数字和图表的真实性 0 读作缺失。 允许保留字符串:治疗 "" 因为失踪通常是故意的.
presets: [base, customRules, strict, typeAware, strictTypeAware, vitest],

给每次压制都一个理由: // oxlint-disable-next-line <rule> -- <reason>。 。 。 .

类别

这个配置为代理写作代码所调制:执行防止出错或帮助代理工作更快的规则,忽略只编码出人类风格偏好的规则. 类别作为否定列表(可归属类别,然后禁用作为噪声的个别规则)而不是允许列表使用,因此类别中新的捕虫规则作为克林特船自动被采用.

类别设置为什么
correctness, (中文(简体) ), suspicious, (中文(简体) ), perferror可能有错误和性能问题.
restrictionerror搭载高值护栏: typescript/no-explicit-any, (中文(简体) ), typescript/no-non-null-assertion, (中文(简体) ), no-var, (中文(简体) ), unicorn/no-abusive-eslint-disable。 。 。 .
pedanticerror卡莉丝 eqeqeq,则 typescript/no-unsafe-* 家庭 家庭 家庭, typescript/no-misused-promises, (中文(简体) ), typescript/switch-exhaustiveness-check, (中文(简体) ), array-callback-return。 。 。 .
styleoff平庸/一致性规则,没有防虫值。 明确选择保留的规则:故意选择一致性(curly, (中文(简体) ), no-else-return附加错误/安全规则 oxlint 文件 style (单位:千美元)no-new-func, (中文(简体) ), guard-for-in, (中文(简体) ), import/no-mutable-exports) (中文(简体) ).
nurseryoff规则仍在制定中;对于代理写作的代码来说太不稳定了.

style 财务报告和审定财务报表 nursery 因为他们未来的规则是噪音而不是信号——没有什么值得自动通过的。 每个 style 因此,保留的规则明确列于 base.json。 。 。 .

什么是共享的

一揽子计划包括:

  • base.json: 简单的反相 JSON 预设 extends 使用量
  • vitest.json: 扩展 base.json 带有 JSON 的 vitest 插件和规则 extends 使用量
  • base 预设: 为 TypeScript 构成导出共享插件、 规则和覆盖
  • frontend 预设: 共享前端 JavaScript, React Doctor, React, 和 JSX 无障碍政策
  • typeAware 预设: 需要 Oxlint 类型意识执行模式的规则
  • react, (中文(简体) ), jest, (中文(简体) ), vitest 预设: 常见回波类型的添加剂插件预设
  • contractFixtures 预设: 警告 MSW, Playwright, 并导出模拟 固定装置由生产者拥有的合同反应计划解析
  • customRules 预设: 注册 ESLint 独立剪贴板插件并复制 共用控制器、模块、合同、跨合同进口和合同包装测试 瞄准镜。 设定规则 选项,例如控制器规则 forbidTsRestHandler, (中文(简体) ), 带有本地覆盖
  • createOxlintConfig: 用 repo- 本地配置编译预设的助手

切换倒计时政策

typescript/switch-exhaustiveness-check 仍为错误 considerDefaultExhaustiveForUnions: true明确 default 定义未匹配的策略 值:拒绝它们、返回可选结果或适用倒计时均可能是故意的. 这也允许对运行时间数据包含但类型Script不包含的遗留值进行默认 代表着。 该规则仍然报告,当一个开关没有缺省时,工会成员被忽略了.

这是有意的权衡:增加工会或雇主成员不会引发诊断 切换已存在默认值。 需要每个新成员的仓库或封闭调度员 经审查后可选择加入 considerDefaultExhaustiveForUnions: false 以本地规则覆盖。 保留 合同需要时,运行时间倒计时;不要仅仅满足条件 检查。 明确违约并不证明其商业政策是正确的.

在倒置冲突前需要重复的空标签 unicorn/no-useless-switch-case 并创造 complexity 将这些标签算作额外路径 。 两名警卫仍然可以执行任务。 见 上游选项文档 对于更严格的未来成员行为。 升级到已公布的软件包发布后再去除 a 消费者的本地规则禁用.

故意残疾规则

base.json 无法持有评论, 因此对非明显“ 关闭” 条目的推理 住在这里( 根据 oxlint 1. 60, 2026-06-11 上的剪贴板- 健康 ) :

  • no-throw-literal (只有脚本文件)数字 : typescript/only-throw-error 替换此只使用语法的规则,并使用类型来识别错误值。 基础规则可以拒绝被推迟的键入变量中的错误值 . 上游替换指南 要求取消基础规则以避免不正确的诊断. 覆盖 .ts, (中文(简体) ), .tsx, (中文(简体) ), .mts,以及 .cts; Java脚本保留 no-throw-literal,并保留类型脚本 only-throw-error 真正的非爱抛出。 在CI中运行有意识的类型。 升级为发布后, 消费者可以删除整个存储器 no-throw-literal: off;一个明确匹配的本地文件覆盖可以选择回到只使用语法的规则.
  • typescript/strict-void-return: TypeScript 故意允许一个值返回函数,其中 void 由于调用者丢弃结果, 需要调用。 这支持普通 forEach 调用 Set.add, (中文(简体) ), Map.set,或 Array.push,并调回返回同步控件的 API。 该规则拒绝这些有效用途 allowReturnAny 选项只放松 any 返回。 保留 no-misused-promises 财务报告和审定财务报表 no-floating-promises 启用用于合成滥用。 TypeScript 仍然拒绝从明确宣布返回的函数返回的值 void。 。 。 .
  • typescript/no-unnecessary-template-expression:简化模板文字中的字符串表达式是一种风格偏好. 允许明确字符串正常化和字符串-enum格式化. 保留 restrict-template-expressions 财务报告和审定财务报表 no-base-to-string 能够检测到不安全的插值.
  • typescript/no-unnecessary-type-conversion: 删除 Number, (中文(简体) ), String, (中文(简体) ), Boolean,或 .toString() 基于已声明类型进行转换是一种样式偏好。 在运行时间数据与其所声明的类型不匹配的边界上,去除可以改变数值或类型. 明确强制是允许的;它不能取代运行时的计数验证或不安全操作的守卫.
  • typescript/no-unnecessary-boolean-literal-compare: 比较,例如 value === true, (中文(简体) ), value === false,以及 value !== false 即使静态类型说 boolean。在运行时,特性标记提供者和持续记录仍然可以提供非布尔值、缺失值或无效值;简化这些比较改变如何处理这些值。 保持对比完好无损,关闭两个共享预设中的冗余诊断. 权衡结果正在失去比已验证的布尔值进行比较的警告;其他类型的正确性和不安全操作规则仍然能够使用.
  • typescript/no-useless-default-assignment: 需要的静态类型不能证明运行时数据包含字段. 删除一个初始化器可以在数据库记录,API响应,特征标记,或会话有效载荷不完整时更改值. 保留这些运行时间默认值;此规则只表示一个按类型看似无法达到的默认值. 使其无法接受在已验证代码中丢失冗余代码信号,因此防御默认在未验证的边界内仍然可用. 编译器和其他类型意识的正确性和不安全操作规则仍然启用.
  • no-extra-boolean-cast数字 : Boolean(value) 在一个条件中,使数字和符号真实性明确。 删除它是一种普通条件的运行时间等同,但重新引入 typescript/strict-boolean-expressions 诊断,因为这一规则拒绝隐含的数字或隐含的真理。 将明确的转换作为冗余风格处理与该类型意识政策相冲突;保持严格的布尔后卫,并保留在基底和独立的前端预设中这一风格规则.
  • typescript/no-invalid-void-type: 有效的补全 API 使用通用调用, 如 Promise.withResolvers<void>() 财务报告和审定财务报表 http.get<void>()即使与 allowInGenericTypeArguments: true,规则拒绝调用表达式类型参数;这个限制是从打字符-eslint继承的,而不是Oxlint端口差异. 将这些 API 更改为 undefined 可改变其公共签名:a void 解决许可证 resolve() 没有争论。 保留其他 TypeScript 正确性和不安全操作的守护功能 .
  • typescript/consistent-return: 可选的浏览和过滤回调将赤色返回与值返回合法混合;规则还报告使用已宣布路径的抓取路径 never 帮手 内容 treatUndefinedAsUnspecified 选项改变其清晰度 undefined 而不是承认这些合同. 上游建议 类型脚本 noImplicitReturns 而是编译器选项 。 启用该选项并在 CI 中运行编译器检查; strict 单靠自己无法做到这一点。 没有编译器守护的仓库必须保持明确的本地 "typescript/consistent-return": "error" 直到他们收养一个替补. array-callback-return 保留用于缺失回调结果。 现有的被抑制的回报型错误和含糊不清的合同仍然是代号债务.
  • typescript/no-unsafe-enum-comparison:像HTTP状态等被命名常数被比作有线数字和串行. 共享的 TypeScript 指导也更喜欢Const对象而不是enum. 与此相反,这一规则要求匹配名义的enum类型,拒绝这些边界比较和输入验证. 禁用它也允许匹配原始语义:在这种情况下,它不会使用指定的成员来执行。 编译器仍然拒绝不相容的截然不同的enum和出行字面;它并不取代这个规则能做的每一个检查. 需要名义上enum身份的存储器可以明确地将这一规则设定为: "error" 内 localConfig.rules编辑 上游指导 描述此权衡; 该规则没有用于平面边框比较的配置选项。 其他防震装置,包括重复值检测,仍然可以使用.
  • typescript/consistent-type-imports: 牛林的口号不是 emitDecoratorMetadata-有意识(即使是在tsconfig链中带有旗帜的有类型意识),因此它将雀巢JS构造器-注入类标为只类型. 应用它的固定值将 DI 令牌转换为 import type,SWC从中去除 design:paramtypes 元数据,运行时断开注入. 在 NestJS repos 中不要启用,直到 oxlint 匹配 typescript-eslint 的装饰处理 .
  • jest/no-confusing-set-timeout (预设):假阳性爆炸——当一个笑话设置文件呼叫时 jest.setTimeout,规则旗下没有 setTimeout 电话(764个干净文件的265k诊断)。 vitest 预设没有 jest/* 键 : 在 oxlint \\ 1.68 下, 只启用了 vitest 插件, jest/* 配置密钥被默默地忽略, 和 joest- plugin 唯一的规则( 例如这个和 jest/prefer-ending-with-an-expect——不能开火—— vitest/no-confusing-set-timeout 不是一个已注册的规则名, 因此“ 关闭” 条目失败配置解析 .
  • import/no-named-as-default 编号 : import/no-named-as-default-member:低信号;它们标出合法的默认-导出导入模式比实际错误多得多(870个点击,~0个bugs).
  • vitest/no-conditional-in-test (vitest presition):规则将一个测试中的每一个条件,包括嵌入的模拟回调和表格驱动的输入构造,都视为违反. 国产假货、货币障碍和有条件的固定性能需要分支,而不削弱这种断言。 该规则无法区分这些案例;将相同的分支抽出来作为帮助者,只能从它的测试-祖先heuristic中隐藏. 保留 vitest/expect-expect, (中文(简体) ), vitest/valid-expect,以及 vitest/require-to-throw-message 能够检查断言.
  • prefer-destructuring: 样式偏好, 没有防止错误值; 不值得作为代理守护符 .

在对13个消费者再投资项目进行审计后,下列项目被关闭(对当地企业进行重新投资) "off" 条目、 内置禁用注释和平原运行 base + 键 vitest 2026-10-14 7 repos上的预设:

  • no-await-in-loop:相继等待通常是故意的(速率限制,蒙哥会话,订购). 该规则推动特工们走向 Promise.all,这会造成货币错误。 它有1 007个内线 禁用9套.
  • node/no-process-env13个重机中的8个在本地关闭 重置中央集权配置可以重开.
  • oxc/no-map-spread:一种微优化. 它建议用 Object.assign。 。 。 .
  • unicorn/consistent-function-scoping:将封口移动到模块范围往往使代码更难被读取.
  • unicorn/no-useless-undefined: 与需要明示的脚本类型签名相冲突 undefined。 。 。 .
  • 固定式,限制类别数字 : no-plusplus, (中文(简体) ), typescript/explicit-member-accessibility, (中文(简体) ), typescript/no-import-type-side-effects, (中文(简体) ), unicorn/import-style。 。 。 .

同一审计取消了明确选择 typescript/array-type 财务报告和审定财务报表 unicorn/filename-case他们是 style 规则,所以 style 分类现在让他们远离.

在采用回调和强制默认时,首先升级为包含回调和强制的已发布版本,然后去除冗余本地 off 条目 typescript/strict-void-return, (中文(简体) ), typescript/no-unnecessary-template-expression,以及 typescript/no-unnecessary-type-conversion需要这些更严格公约的仓库可以选择重新加入当地公约 error 超载 保留 no-misused-promises 财务报告和审定财务报表 no-floating-promises 启用 : 允许丢弃的同步结果不允许未处理的同步失败 。 保留 restrict-template-expressions 财务报告和审定财务报表 no-base-to-string 启用用于不安全插值.

测试文件在 base.json 禁用 typescript/no-unsafe-* 家庭 家庭 家庭, unbound-method, (中文(简体) ), no-non-null-assertion,以及 restrict-template-expressions 用于测试文件:模拟, expect.any,以及 createMock 使这些规则在测试中达到~90%的噪声(模仿长久以来的eslint-config 覆盖),同时保持它们可以执行生产代码. JSON 虚拟预设扩展 base.json,但导出的类型脚本 vitest 预设加载器只读取其插件和规则。 因此,导出预设带有相同的 typescript/unbound-method: off 规则用于基准测试文件 globs 。 一会儿 localConfig 仍然可以恢复对选定测试的规则.

版本与发布记录

@clipboard-health/oxlint-config 共发布 138 个版本,首次发布于 2026/04/09;过去 12 个月发布了 138 个版本。

版本发布日期距今
5.1.8latest2026/11/054 天前
5.1.72026/11/054 天前
5.1.62026/11/055 天前
5.1.52026/11/045 天前
5.1.42026/11/045 天前
5.1.32026/11/036 天前

关于 @clipboard-health/oxlint-config 的常见问题

@clipboard-health/oxlint-config 是什么?

共享 Clippboard 健康存储器的 Oxlint 配置 .

如何安装 @clipboard-health/oxlint-config?

在项目目录运行 npm install @clipboard-health/oxlint-config,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:oxlint(>=1.68.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@clipboard-health/oxlint-config 支持 TypeScript 吗?

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

@clipboard-health/oxlint-config 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@clipboard-health/oxlint-config 可以商用吗?

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

@clipboard-health/oxlint-config 的下载量有多少?

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

@clipboard-health/oxlint-config 还在维护吗?

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