@blumintinc/eslint-plugin-blumint

中文文档
1.23.0发布于 2026/09/30ISCTypeScriptCommonJS构建来源已验证近 30 天下载 1867

自定义用于 BluMint 内的 eslint 规则

此软件包已被标记为弃用

No longer published. These rules moved into BluMint's internal monorepo; existing versions keep working.

中文使用文档
文档目录4 节
  1. 安装
  2. 使用量
  3. 自主维修
  4. 规则

@blumintinc/eslint-plugin-blumint (英语)

自定义用于 BluMint 的 eslint 规则

安装

你首先需要安装 ESLint 语录数字 :

npm i eslint --save-dev

下一个,安装 @blumintinc/eslint-plugin-blumint数字 :

npm install @blumintinc/eslint-plugin-blumint --save-dev

使用量

添加 @blumintinc/blumint 到您的插件区 .eslintrc 配置文件 。 你可以省略这个 eslint-plugin- 前缀 :

{
    "plugins": [
        "@blumintinc/blumint"
    ]
}

然后在规则章节下配置您想要使用的规则 .

{
    "rules": {
        "blumint/rule-name": "error"
    }
}

或使用推荐的配置 :

{
    "extends": ["some-other-plugin", "plugin:@blumintinc/blumint/recommended"]
}

自主维修

这回波是由自动回路维护的 而不是人类的切割释放 需求。 见 .澄清/技能/再维护/SKILL.md 操作模型。 两项合同使其安全和自愈:

  • 维护者 (单位:千美元)/maintainer,由 scripts/maintainer.ts这是 唯一操作员:它排出打开的问题队列(在特性前出错,最古老) 首先,自来水修正到 develop,并在空队列上促进 develop → main 然后快速前进 develop。 。 。 .
  • release-manifest.json 是一个严格的,公布 version → fixed-rules 地图 (单位:千美元)scripts/generate-release-manifest.js页:1 @semantic-release/exec 准备Cmd) 因此,消费者可以按确切的规则名称重新制定残疾规则,从不分析 变换日志. 这是可靠的,因为 每个 fix编号 :feat 承诺的范围必须 成为真正的规则名称: 由 blumint-rule-scope 承诺规则和 页:1 validate-commit-scopes CI门 每个固定/执行一个规则.

出版时, scripts/dispatch-agora-release.js 发射a repository_dispatch 改为 (f) 将针头撞出,使现在固定的规则(FP-审计)重新生效。 这个 完全闭合的循环记录在former's .claude/skills/eslint-autonomy/SKILL.md。 。 。 .

规则

QQ 配置启用 .
QQ 配置已禁用 .
设置在 recommended 配置 .
自动修复 --fix CLI 选项。 。 。 .
手动修复 编辑器建议。 。 。 .
需要吗 类型信息。 。 。 .

名称                                         说明💼🚫🔧💡💭
数组方法- 此文字防止在OOP中滥用阵列方法✅
避免使用指南使用 util/ 而不是 utils/ 目录执行✅
类方法 - 从上到下读取执行从上到下班的布局,所以呼叫者会引导他们进入他们依赖的帮助者.✅🔧
连续召回命名对召回道具和功能实施一致的命名惯例✅🔧
动态https-errorsHttpsError 消息保持静态,并将特定请求的细节移动到第三个参数,这样错误标识符保持稳定,调试上下文得到保存.✅
执行安全对象键在使用涉及字符串插值或明确字符串转换的计算键访问对象属性时强制使用 serfe(id) .✅🔧
强制推出执行带有断言前缀的函数必须丢出一个错误或调用进程. exit(1),调用断言前缀方法的函数本身应当被断言前缀✅
执行- 布尔- 命名- 前缀通过要求核准的前缀,对布尔值执行一致的命名惯例✅
可执行类型强制推进和响应型出口可调用功能✅
强制召回强制使用Callback用于内置函数,并使用Memo用于包含JSX道具中函数的对象/阵列来防止不必要的重交. 这通过确保稳定的函数参考,使复合对象之间相互参照和记忆,提高了React组件性能.✅
执法-集中式火炉从预定地点强制使用中央模拟炉✅🔧
执行- 云函数长确保.f.ts文件路径在62个字符限制内生成 Firebase Cloud 函数ID✅
执行控制台错误强制进行适当的伐木,以便根据严重程度使用AlertDialog。 当严重性是"过敏"时,必须包含控制台. error. 当严重性是"警告"时,必须包含控制台.warn. 这确保所有用户发现的错误和警告都记录在可观察系统中.✅
执行- cs- 媒体- 批评对联署材料的断点进行CSS媒体询问✅
执行日期 - 时间强制将任何名为 TTime 的通用类型参数明确设定为前端代码中的日期✅🔧
执行动态文件命名当@blumintinc/brumint/enforce-distruction-imports或@blumintinc/brumint/require-distruction-firebase-imports规则被禁用时,强制.ts(x)文件命名
执行动力-火炮基地进口需要通过动态导入来加载 FirebaseCloud 模块,因此 Firebase 代码不包含在初始捆绑中,只有在需要时才加载.✅🔧💡
强制动力进口为外部库默认执行动态导入以优化捆绑大小, 除非明确忽略✅
执行早期结构Hoist对象从React hooks中分解出,因此依赖数组跟踪正在使用的字段而不是整个对象.✅🔧
执行空对象检查确保检查物体的存在还防止空物体,使空有效载荷被当作缺失数据处理.✅🔧
强制出口功能型执行函数道具和返回值的导出类型✅🔧
用于入境点的执法-f-扩展对入境点实施.f.ts扩展✅
执行- 外地病理学- 语法- 指导员在将文档Data传递到DocSetter时强制使用Firestore FieldPath语法. 开发者不应使用嵌入式对象语法,而应为深嵌入式场使用点标记.✅🔧
执行-消防站-doc-ref-generic执行 Firestore 文档参考、收藏参考和收藏组的通用参数✅
执行-消防站-大楼强制使用Firestore外观而不是直接Firestore方法✅
执行消防车路径图强制使用Firestore路径的公用功能,以确保类型安全、可维护性和连贯的路径构造。 这样可以防止手动串接错,使路径变化更容易管理.✅
执法-消防-规则-获取-访问确保 Firestore 安全规则使用默认值的.get(),而不是直接的字段访问比较(例如资源.data.fieldX.fieldY!=无效).✅🔧
执行式消防车对 Firestore 操作使用 { 合并: true } 而不是 更新 () 执行 set () ,以确保行为一致 。 如果文档不存在,则更新()方法失败,而设定()与 {合并: true } 必要时创建文档并安全地合并字段,使其更加可靠和可预测.✅🔧
执法-全球协调者为 React 组件/ hooks 执行全球静态常数✅🔧
执行资本化强制使用“ ID” 而不是“ id” 在用户界面文本中✅🔧
可执行识别的消防车型强制让 Firestore 类型定义扩展可识别并匹配其文件夹名称✅
前缀验证器强制执行 is 用于在 /验证人// *.ts 文件✅
执行-m3-判决案件强制执行材料设计 3 句子大写用于用户-facing文本——旗下标题 Case和JSX文本中的所有 CAPS 字符串并配置了字符串道具.✅💡
执行- 记忆- 同步执行 @Memoize() 使用0-1参数的async 方法进行装饰,以缓存结果并防止冗余API调用或昂贵的计算. 没有记忆,再三拨打会触发冗余请求或昂贵的计算,从而增加延迟. @memoize() 按参数进行缓存结果, 确保后续调用相同的输入立即返回 .✅🔧
执行- 记忆- 获取器强制@ Memoize( ) 在私人类获取器上安装装饰器, 以避免重现并保存整个访问权限的状态 .✅🔧
执行-微缩写在对象和数组比较操作中使用微diff执行✅🔧
执行- 模拟- 消防仓库使用标准化的模拟Firestore工具,而不是手工的Firestore模拟或第三方模拟。 这确保了整个代码库的一致测试行为,减少了锅炉板,并为Firestore操作提供了类型安全的取笑.✅
执法-四轮相机强制使用 - Rounded 变体用于 MUI 图标✅🔧
执行- 对象- 立方正视强制执行从函数返回的对象字元时,应当标记为 as const 确保类型安全和不可改变性.✅🔧
强制-正命名对布尔变量执行正命名并避免否定✅
执行道具-参数-名称权威规则:以"Props"结尾的种类的参数应该被命名为"道克"(或者在存在多道道克参数时的前缀变体)✅🔧
执法-命名-一致性偏好将单个"Props"类型参数命名为"道具";执行推迟执行-道具-辩证-名为多道具案例✅🔧
执行键使用中央路由器执行从 chaskKeys.ts 的密钥常数,用于使用 Ruuters State 密钥参数✅🔧
强制反应类型命名对反应类型强制命名公约✅🔧
执行-实时b-path-utils强制使用实时数据库路径的公用功能✅
执行- 投降- 击- 纪念实施适当的记忆和使用✅
执行安全字符串强制使用安全稳定的字符串而不是JSON.字符串处理循环引用并确保确定性输出. JSON.stringify可以在循环引用上抛出出出错误,并对不同顺序中具有相同属性的对象产生不一致的输出. 安全稳定地处理这些案件.✅💡
执行- 串行- 参数执行Firebase可调用/HTTPS函数的可序列参数.✅
执行单项出口单项文件强制执行 .tsx/.jsx 文件导出最多一个 React 组件, 文件导出最多一个类别✅
执行单声道类型名称执行类型脚本类型名称为单数✅
执行- snapshot- state-缩小状态执行 FirestoreSnapshot state 变量的正确收缩。 Falsy/ truthy checks 是语义错误, 因为所有的字符串状态都是真实的; 原始的缩入数据类型绕过isSnapshotReady抽象.✅💡
执行-稳定-散射-道具在React hook 依赖阵列中使用散开道具休息对象时需要稳定Hash 包接来避免每次渲染上被新对象引用所触发的重置.✅🔧
执行存储文本要求存储访问通过本地Storage和SessionStorage上下文提供者,而不是直接浏览器 API✅
执行时间戳 - 现在强制使用 Timestamp.now () 在后端代码中获取当前时间戳 。 此规则可防止使用Timestamp. fromDate(新日期 ())等替代品,或可能导致不一致的其他日期创建模式.✅🔧
执行- 转换- 记忆强制记忆变换 Value 和变换 OnChange 在适应Value 中✅
执行类型-指令-位置执行只显示类型的文件( 仅包含类型/ 界面/ enum 声明) ✅
执行型标记-下行码-块确保没有语言描述符的 Markdown 有栅栏的代码块可以按键显示一致的突出显示 .✅🔧
执行- 独一无二的ursor- headers确保文件在任何代码之前有一个准确的光标标题,其中包含所需的标记(如 @ fileoverview)✅🔧
执行- 使用- flex- gap- on- wrap需求 useFlexGap 在一个MUI上 Stack 包裹和通过 spacing,因为基于边距的相距让被包裹的行无行间隙和一个幽灵指向缩进✅🔧
执行动词名命名执行函数和方法的动词短语✅
保证指针事件确保指针事件:无一被添加到非交互性伪元素中✅🔧
导出 - if- doubt应输出所有顶级可变声明、类型定义和函数✅
提取-全球平衡剂尽可能将静态常数和函数提取到全局范围, 并强制将类型缩小为循环中的数字字形✅
快速- 深度- 平等- 超微缩在平等检查中采用快速、深入、平等而不是微调执行✅🔧
火堆- 交易阅读- 写前强制在任何写入操作前执行所有 Firestore 交易读取操作✅
平按键将连续的对同一阵列的调用合并为多个参数的一次调用.✅🔧
通用启动- t强制使用 TypeScript 通用类型参数从 T 开始, 这样它们就远离运行时值 .✅
全局风格执行 UPPER SNAKE CASE 并用作全球静态常数的集合✅🔧
jsdoc - 以上战地要求JSDoc区块坐到球场上方,而不是排入后方,因此IDE会盘旋地表显示文件.✅🔧
仅按键最外元素强制使列表渲染中只有最外层元素有密钥道具✅🔧
逻辑自上而下分组执行逻辑上下组合相关语句✅🔧
备忘录比较-深度复杂-道具建议对接收对象/阵列道具的记忆分解组件进行深度比较,以避免浅比较重置.✅🔧💭
备忘-反应-组件在渲染体、钩子或被传递为道具中定义的否定反应组件✅
记忆 - 根- 层 - 层防止在 React 组件/ hooks 的根层创建更高顺序组件,而不将它们包裹在使用Memo 中,以保持包裹的组件特性在相间稳定.✅
无总是真实的假条件检测那些总是真实的 或总是病态的条件✅
无阵列长度检测数组. 长度条目在 React hook 依赖数组中,因为长度忽略了内容变化; 通过使用Memo 的 surfaceHash( array) 记忆自动修正, 并取决于散列 .✅🔧
无同步阵列过滤器在 Array.filter () 中取消 async 调用 。 Async 上游将总是真实的许诺还给过滤器,所以没有任何元素被移除. 首先解决同步检查(保证.all + map),或者使用同步的上游来决定要保存哪些项目.✅
无同步预览取消对 Array 的自动调用。 每一次✅
无循环参考在对象中取消循环引用✅
无等级结构减少类别实例的结构,防止损失 this 上下文✅🔧
无复合-云-参数拒绝将复杂对象传递到云函数✅
无组合层道具阻碍强制GPU堆肥层的CSS属性(如变形,滤取,会变等). 外层会消耗GPU内存并分拆渲染工作,在一页被喷出时会减慢滚动和动画. 该规则检查了内在样式对象和MUI sx道具,因此地层提升保持有意而非偶然.✅
无条件升入jsx与JSX其他文本相比.✅
无控制台错误Disallow Coper.error 这样的错误通过结构化处理流出(HttpsError/使用前端的ErrorAlert,后端的结构化日志).✅
无弯曲的裂纹-环绕自带财产取消只将被评论成员包装在类型声明内的卷卷轴标记块✅🔧
无直接功能状态防止将一个函数直接传递给一个使用状态设置器——React将引用它作为功能更新器而不是存储. 在 tunk 中环绕: set State (() QQ fn) .✅🔧
无空依赖-召回使用Discourg 使用 Callback( []) 或围绕静态函数使用 LatestCallback 。 静态回调不需要钩子机械——将其提取到模块级公用事业中,以便明确并避免不必要的钩子起落架.✅🔧
无实体对象读取器在React ch钩依赖数组中避免使用整个对象.✅🔧💭
无过多的父母链在Firestore和实时DB更改处理器中过度使用Ref.parent属性链💡
无显式返回类型当 TypeScript 可以推断函数时, 取消对函数的明确返回类型说明 。 这在利用TypeScript强大的类型推论的同时减轻了代码动词和维护负担. 类型警卫职能例外(使用 is 关键字),递归函数,超载函数,界面方法,以及显性类型能提高清晰度的抽象方法.✅🔧
无填充- template- mutation 语句通过字符串集合,模板字元,或字符串方法调用,否定了fillTemplate()的返回值. 填充的 Algolia 过滤器必须使用逐字记录, 以便匹配Template( ) , 使其匹配; 填充后的修改静默地打破实时散列等值 .✅
无过滤器不返回Disallow Array.filter 调用未明确返回(如果是块语句的一部分)✅
无消防站 - 夹克防止在测试文件中导入起火点- 起火点✅🔧
无火炉物体阵列Firestore模型中对象类型的解析数组. 偏好由有索引字段的 id 键入的录音地图,或 ID 的子集/阵列.✅
无后缀取消调用名称中通用的“ 处理器” 后缀, 所以名称解释它们执行的动作✅
无病与残疾Disallow eslint-disable 说明代理开发工具(worktree、cwd、stop-hook、claude)而不是代码本身的语义.✅
无饥饿者在本地声明的变量、类型和类别中否定匈牙利语标记✅
无内置组件-道具防止在渲染中定义的内线函数组件被传递给CatalogWrapper等组件类型的道具来避免重挂和UI闪出.✅
没有jsx-in-hoks防止钩子返回JSX✅
无-jsx-白色空间-升停止使用 {'} JSX 代码中的元素✅
无边际财产防止边距属性(边距、边距、边距、边距、边距、边距、边距Top、边距Bottom、mx、我的等)出现在MUI的样式中,因为边距与容器控制的间隔、双沟和错配的断点相搏;使间隔与垫装、间隙或间隔道具保持集中.✅
静态无记忆在静态方法上防止使用 @ memoize () 装饰器✅
无错误引导- 布尔前缀为实际返回布尔值的函数保留布尔式前缀(is/has/should)来避免误导呼叫站点.✅
无误用- switch- case防止在切换语句中滥用逻辑OR(QQ),这会导致混淆和容易出错的代码. 与其在大小写表达式中使用OR运算符,不如按顺序使用多个大小写来处理多值. 这提高了代码的可读性并遵循了标准的开关大小写模式.✅
无混合火炉交易防止在交易中混合交易和非交易的火炉操作✅
无烟火基地指挥官防止直接嘲笑消防基地Admin;代之以使用共享测试助手✅
无对象值上弦Disallow Object.values () 在字符串上将字符串视为字符数组,这很可能是意外的行为.✅
不可逾越的方法调用建筑师拒绝在构造器中调用压倒性方法以防止出乎意料的行为✅
无通道获取器避免仅仅在构造器注入对象上再暴露嵌入属性而不添加行为的方法✅
无端端式工具提示Disallow门户网站-上交组件(Dialog, Drawer, Menu, Popover, Portal, Modal)在工具提示包组件内部. React Portals 保存 React-tree 事件起伏,所以在工具提示下嵌入的传送门让工具提示在模式上成为了孤儿.✅
无冗余说明拒绝将类型注释与相同值的相同类型断言结合起来。 保留一个单一的真相来源来避免多余的可以分道扬镳的种类声明.✅🔧💭
无冗余-布尔-召回道具取消重复可选回调道具语义的冗余布尔道具,违反了界面隔离原则.✅
无冗余参数类型取消冗余参数类型说明✅🔧
无多余的- 此参数将流过类例成员(this.foo)降低到类例方法;代之以在方法内从中访问成员.✅
无多余的使用召回-包装防止在额外使用中从钩子/折叠中将已经记忆/稳定的回调包起来 Callback()✅🔧
无投降功能组件拒绝宣布本地 render* 函数返回 JSX 并将其消耗为平面函数(直接调用或数组输入回调); 作者将其消耗为 JSX 提供的真正组件✅
无请求禁止发送 4xx/5xx 在请求处理器上表达内部的响应; 将结构化的 HttpsError 实例扔出, 这样包装器可以一致格式化、 日志化和映射错误 .✅
无限制财产取消某些对象上的某些属性, 对对象. keys () 和 Object. values () 的特殊处理
[不满意的前端散

版本与发布记录

@blumintinc/eslint-plugin-blumint 共发布 355 个版本,首次发布于 2023/05/17;过去 12 个月发布了 284 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.23.0latest2026/09/301 个月前
1.22.02026/09/271 个月前
1.21.182026/09/082 个月前
1.21.172026/09/072 个月前
1.21.162026/09/072 个月前
1.21.152026/09/072 个月前

关于 @blumintinc/eslint-plugin-blumint 的常见问题

@blumintinc/eslint-plugin-blumint 是什么?

自定义用于 BluMint 内的 eslint 规则注意:该包已被作者标记为弃用——No longer published. These rules moved into BluMint's internal monorepo; existing versions keep working.

如何安装 @blumintinc/eslint-plugin-blumint?

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

@blumintinc/eslint-plugin-blumint 支持 TypeScript 吗?

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

@blumintinc/eslint-plugin-blumint 支持 ESM 还是 CommonJS?

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

@blumintinc/eslint-plugin-blumint 需要什么版本的 Node.js?

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

@blumintinc/eslint-plugin-blumint 可以商用吗?

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

@blumintinc/eslint-plugin-blumint 的下载量有多少?

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

@blumintinc/eslint-plugin-blumint 还在维护吗?

最新版本 1.23.0 发布于 2026/09/30(1 个月前);至今共发布 355 个版本,其中过去 12 个月发布了 284 个;首次发布于 2023/05/17。作者已将其标记为弃用,新项目建议寻找替代方案。