# @blumintinc/eslint-plugin-blumint 中文文档

规范地址：https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/

版本：1\.23\.0
npm 元数据更新时间：2026-10-17T06:04:28.413Z
中文译文更新时间：2026-11-08T09:17:37.965Z
软件包许可：ISC

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

原始 npm 页面：https://www.npmjs.com/package/%40blumintinc/eslint-plugin-blumint
原文对照：https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/?lang=original
项目主页：https://github.com/BluMintInc/eslint-custom-rules#readme
源码仓库：https://github.com/BluMintInc/eslint-custom-rules

弃用说明：No longer published\. These rules moved into BluMint's internal monorepo; existing versions keep working\.

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

- 包体积（解压后）：6.5 MB，473 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.0\.0
- 运行依赖：7 个
- peer 依赖：eslint \>=7 \<9
- 首次发布：2023-05-16T21:35:13.752Z
- 最新版本发布：2026-09-30T00:58:29.487Z
- 近 30 天下载量：1867（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：355（近 12 个月 284 个）

## 中文简介

自定义用于 BluMint 内的 eslint 规则

## 安装

```sh
npm install @blumintinc/eslint-plugin-blumint
```

也可以使用：`pnpm add @blumintinc/eslint-plugin-blumint`、`yarn add @blumintinc/eslint-plugin-blumint`、`bun add @blumintinc/eslint-plugin-blumint`

## README

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

自定义用于 BluMint 的 eslint 规则

## 安装

你首先需要安装 [ESLint 语录](https://eslint.org/)数字 :

```sh
npm i eslint --save-dev
```

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

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

## 使用量

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

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

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

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

或使用推荐的配置 :

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

## 自主维修

这回波是由自动回路维护的 而不是人类的切割释放 需求。 见 [.澄清/技能/再维护/SKILL.md](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/.claude/skills/repo-maintenance/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 选项](https://eslint.org/docs/user-guide/command-line-interface#--fix)。 。 。 .  
手动修复 [编辑器建议](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions)。 。 。 .  
需要吗 [类型信息](https://typescript-eslint.io/linting/typed-linting)。 。 。 .

| 名称                                          | 说明 | 💼 | 🚫 | 🔧 | 💡 | 💭 |
| :-- | :-- | :-- | :-- | :-- | :-- | :-- |
| [数组方法- 此文字](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/array-methods-this-context.md) | 防止在OOP中滥用阵列方法 | ✅ |  |  |  |  |
| [避免使用指南](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/avoid-utils-directory.md) | 使用 util/ 而不是 utils/ 目录执行 | ✅ |  |  |  |  |
| [类方法 - 从上到下读取](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/class-methods-read-top-to-bottom.md) | 执行从上到下班的布局,所以呼叫者会引导他们进入他们依赖的帮助者. | ✅ |  | 🔧 |  |  |
| [连续召回命名](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/consistent-callback-naming.md) | 对召回道具和功能实施一致的命名惯例 | ✅ |  | 🔧 |  |  |
| [动态https-errors](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/dynamic-https-errors.md) | HttpsError 消息保持静态,并将特定请求的细节移动到第三个参数,这样错误标识符保持稳定,调试上下文得到保存. | ✅ |  |  |  |  |
| [执行安全对象键](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-assert-safe-object-key.md) | 在使用涉及字符串插值或明确字符串转换的计算键访问对象属性时强制使用 serfe(id) . | ✅ |  | 🔧 |  |  |
| [强制推出](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-assert-throws.md) | 执行带有断言前缀的函数必须丢出一个错误或调用进程. exit(1),调用断言前缀方法的函数本身应当被断言前缀 | ✅ |  |  |  |  |
| [执行- 布尔- 命名- 前缀](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-boolean-naming-prefixes.md) | 通过要求核准的前缀,对布尔值执行一致的命名惯例 | ✅ |  |  |  |  |
| [可执行类型](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-callable-types.md) | 强制推进和响应型出口可调用功能 | ✅ |  |  |  |  |
| [强制召回](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-callback-memo.md) | 强制使用Callback用于内置函数,并使用Memo用于包含JSX道具中函数的对象/阵列来防止不必要的重交. 这通过确保稳定的函数参考,使复合对象之间相互参照和记忆,提高了React组件性能. | ✅ |  |  |  |  |
| [执法-集中式火炉](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-centralized-mock-firestore.md) | 从预定地点强制使用中央模拟炉 | ✅ |  | 🔧 |  |  |
| [执行- 云函数长](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-cloud-function-id-length.md) | 确保.f.ts文件路径在62个字符限制内生成 Firebase Cloud 函数ID | ✅ |  |  |  |  |
| [执行控制台错误](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-console-error.md) | 强制进行适当的伐木,以便根据严重程度使用AlertDialog。 当严重性是"过敏"时,必须包含控制台. error. 当严重性是"警告"时,必须包含控制台.warn. 这确保所有用户发现的错误和警告都记录在可观察系统中. | ✅ |  |  |  |  |
| [执行- cs- 媒体- 批评](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-css-media-queries.md) | 对联署材料的断点进行CSS媒体询问 | ✅ |  |  |  |  |
| [执行日期 - 时间](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-date-ttime.md) | 强制将任何名为 TTime 的通用类型参数明确设定为前端代码中的日期 | ✅ |  | 🔧 |  |  |
| [执行动态文件命名](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-dynamic-file-naming.md) | 当@blumintinc/brumint/enforce-distruction-imports或@blumintinc/brumint/require-distruction-firebase-imports规则被禁用时,强制.ts(x)文件命名 |  |  |  |  |  |
| [执行动力-火炮基地进口](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-dynamic-firebase-imports.md) | 需要通过动态导入来加载 FirebaseCloud 模块,因此 Firebase 代码不包含在初始捆绑中,只有在需要时才加载. | ✅ |  | 🔧 | 💡 |  |
| [强制动力进口](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-dynamic-imports.md) | 为外部库默认执行动态导入以优化捆绑大小, 除非明确忽略 | ✅ |  |  |  |  |
| [执行早期结构](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-early-destructuring.md) | Hoist对象从React hooks中分解出,因此依赖数组跟踪正在使用的字段而不是整个对象. | ✅ |  | 🔧 |  |  |
| [执行空对象检查](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-empty-object-check.md) | 确保检查物体的存在还防止空物体,使空有效载荷被当作缺失数据处理. | ✅ |  | 🔧 |  |  |
| [强制出口功能型](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-exported-function-types.md) | 执行函数道具和返回值的导出类型 | ✅ |  | 🔧 |  |  |
| [用于入境点的执法-f-扩展](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-f-extension-for-entry-points.md) | 对入境点实施.f.ts扩展 | ✅ |  |  |  |  |
| [执行- 外地病理学- 语法- 指导员](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-fieldpath-syntax-in-docsetter.md) | 在将文档Data传递到DocSetter时强制使用Firestore FieldPath语法. 开发者不应使用嵌入式对象语法,而应为深嵌入式场使用点标记. | ✅ |  | 🔧 |  |  |
| [执行-消防站-doc-ref-generic](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-firestore-doc-ref-generic.md) | 执行 Firestore 文档参考、收藏参考和收藏组的通用参数 | ✅ |  |  |  |  |
| [执行-消防站-大楼](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-firestore-facade.md) | 强制使用Firestore外观而不是直接Firestore方法 | ✅ |  |  |  |  |
| [执行消防车路径图](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-firestore-path-utils.md) | 强制使用Firestore路径的公用功能,以确保类型安全、可维护性和连贯的路径构造。 这样可以防止手动串接错,使路径变化更容易管理. | ✅ |  |  |  |  |
| [执法-消防-规则-获取-访问](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-firestore-rules-get-access.md) | 确保 Firestore 安全规则使用默认值的.get(),而不是直接的字段访问比较(例如资源.data.fieldX.fieldY!=无效). | ✅ |  | 🔧 |  |  |
| [执行式消防车](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-firestore-set-merge.md) | 对 Firestore 操作使用 { 合并: true } 而不是 更新 () 执行 set () ,以确保行为一致 。 如果文档不存在,则更新()方法失败,而设定()与 {合并: true } 必要时创建文档并安全地合并字段,使其更加可靠和可预测. | ✅ |  | 🔧 |  |  |
| [执法-全球协调者](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-global-constants.md) | 为 React 组件/ hooks 执行全球静态常数 | ✅ |  | 🔧 |  |  |
| [执行资本化](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-id-capitalization.md) | 强制使用“ ID” 而不是“ id” 在用户界面文本中 | ✅ |  | 🔧 |  |  |
| [可执行识别的消防车型](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-identifiable-firestore-type.md) | 强制让 Firestore 类型定义扩展可识别并匹配其文件夹名称 | ✅ |  |  |  |  |
| [前缀验证器](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-is-prefix-validators.md) | 强制执行 `is` 用于在 **/验证人/**/ \*.ts 文件 | ✅ |  |  |  |  |
| [执行-m3-判决案件](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-m3-sentence-case.md) | 强制执行材料设计 3 句子大写用于用户-facing文本——旗下标题 Case和JSX文本中的所有 CAPS 字符串并配置了字符串道具. | ✅ |  |  | 💡 |  |
| [执行- 记忆- 同步](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-memoize-async.md) | 执行 @Memoize() 使用0-1参数的async 方法进行装饰,以缓存结果并防止冗余API调用或昂贵的计算. 没有记忆,再三拨打会触发冗余请求或昂贵的计算,从而增加延迟. @memoize() 按参数进行缓存结果, 确保后续调用相同的输入立即返回 . | ✅ |  | 🔧 |  |  |
| [执行- 记忆- 获取器](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-memoize-getters.md) | 强制@ Memoize( ) 在私人类获取器上安装装饰器, 以避免重现并保存整个访问权限的状态 . | ✅ |  | 🔧 |  |  |
| [执行-微缩写](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-microdiff.md) | 在对象和数组比较操作中使用微diff执行 | ✅ |  | 🔧 |  |  |
| [执行- 模拟- 消防仓库](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-mock-firestore.md) | 使用标准化的模拟Firestore工具,而不是手工的Firestore模拟或第三方模拟。 这确保了整个代码库的一致测试行为,减少了锅炉板,并为Firestore操作提供了类型安全的取笑. | ✅ |  |  |  |  |
| [执法-四轮相机](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-mui-rounded-icons.md) | 强制使用 - Rounded 变体用于 MUI 图标 | ✅ |  | 🔧 |  |  |
| [执行- 对象- 立方正视](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-object-literal-as-const.md) | 强制执行从函数返回的对象字元时,应当标记为 `as const` 确保类型安全和不可改变性. | ✅ |  | 🔧 |  |  |
| [强制-正命名](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-positive-naming.md) | 对布尔变量执行正命名并避免否定 | ✅ |  |  |  |  |
| [执行道具-参数-名称](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-props-argument-name.md) | 权威规则:以"Props"结尾的种类的参数应该被命名为"道克"(或者在存在多道道克参数时的前缀变体) | ✅ |  | 🔧 |  |  |
| [执法-命名-一致性](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-props-naming-consistency.md) | 偏好将单个"Props"类型参数命名为"道具";执行推迟执行-道具-辩证-名为多道具案例 | ✅ |  | 🔧 |  |  |
| [执行键](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-querykey-ts.md) | 使用中央路由器执行从 chaskKeys.ts 的密钥常数,用于使用 Ruuters State 密钥参数 | ✅ |  | 🔧 |  |  |
| [强制反应类型命名](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-react-type-naming.md) | 对反应类型强制命名公约 | ✅ |  | 🔧 |  |  |
| [执行-实时b-path-utils](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-realtimedb-path-utils.md) | 强制使用实时数据库路径的公用功能 | ✅ |  |  |  |  |
| [执行- 投降- 击- 纪念](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-render-hits-memoization.md) | 实施适当的记忆和使用 | ✅ |  |  |  |  |
| [执行安全字符串](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-safe-stringify.md) | 强制使用安全稳定的字符串而不是JSON.字符串处理循环引用并确保确定性输出. JSON.stringify可以在循环引用上抛出出出错误,并对不同顺序中具有相同属性的对象产生不一致的输出. 安全稳定地处理这些案件. | ✅ |  |  | 💡 |  |
| [执行- 串行- 参数](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-serializable-params.md) | 执行Firebase可调用/HTTPS函数的可序列参数. | ✅ |  |  |  |  |
| [执行单项出口单项文件](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-single-exported-unit-per-file.md) | 强制执行 .tsx/.jsx 文件导出最多一个 React 组件, 文件导出最多一个类别 | ✅ |  |  |  |  |
| [执行单声道类型名称](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-singular-type-names.md) | 执行类型脚本类型名称为单数 | ✅ |  |  |  |  |
| [执行- snapshot- state-缩小状态](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-snapshot-state-narrowing.md) | 执行 FirestoreSnapshot state 变量的正确收缩。 Falsy/ truthy checks 是语义错误, 因为所有的字符串状态都是真实的; 原始的缩入数据类型绕过isSnapshotReady抽象. | ✅ |  |  | 💡 |  |
| [执行-稳定-散射-道具](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-stable-hash-spread-props.md) | 在React hook 依赖阵列中使用散开道具休息对象时需要稳定Hash 包接来避免每次渲染上被新对象引用所触发的重置. | ✅ |  | 🔧 |  |  |
| [执行存储文本](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-storage-context.md) | 要求存储访问通过本地Storage和SessionStorage上下文提供者,而不是直接浏览器 API | ✅ |  |  |  |  |
| [执行时间戳 - 现在](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-timestamp-now.md) | 强制使用 Timestamp.now () 在后端代码中获取当前时间戳 。 此规则可防止使用Timestamp. fromDate(新日期 ())等替代品,或可能导致不一致的其他日期创建模式. | ✅ |  | 🔧 |  |  |
| [执行- 转换- 记忆](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-transform-memoization.md) | 强制记忆变换 Value 和变换 OnChange 在适应Value 中 | ✅ |  |  |  |  |
| [执行类型-指令-位置](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-types-directory-placement.md) | 执行只显示类型的文件( 仅包含类型/ 界面/ enum 声明) | ✅ |  |  |  |  |
| [执行型标记-下行码-块](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-typescript-markdown-code-blocks.md) | 确保没有语言描述符的 Markdown 有栅栏的代码块可以按键显示一致的突出显示 . | ✅ |  | 🔧 |  |  |
| [执行- 独一无二的ursor- headers](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-unique-cursor-headers.md) | 确保文件在任何代码之前有一个准确的光标标题,其中包含所需的标记(如 @ fileoverview) | ✅ |  | 🔧 |  |  |
| [执行- 使用- flex- gap- on- wrap](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-use-flex-gap-on-wrap.md) | 需求 `useFlexGap` 在一个MUI上 `Stack` 包裹和通过 `spacing`,因为基于边距的相距让被包裹的行无行间隙和一个幽灵指向缩进 | ✅ |  | 🔧 |  |  |
| [执行动词名命名](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/enforce-verb-noun-naming.md) | 执行函数和方法的动词短语 | ✅ |  |  |  |  |
| [保证指针事件](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/ensure-pointer-events-none.md) | 确保指针事件:无一被添加到非交互性伪元素中 | ✅ |  | 🔧 |  |  |
| [导出 - if- doubt](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/export-if-in-doubt.md) | 应输出所有顶级可变声明、类型定义和函数 | ✅ |  |  |  |  |
| [提取-全球平衡剂](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/extract-global-constants.md) | 尽可能将静态常数和函数提取到全局范围, 并强制将类型缩小为循环中的数字字形 | ✅ |  |  |  |  |
| [快速- 深度- 平等- 超微缩](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/fast-deep-equal-over-microdiff.md) | 在平等检查中采用快速、深入、平等而不是微调执行 | ✅ |  | 🔧 |  |  |
| [火堆- 交易阅读- 写前](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/firestore-transaction-reads-before-writes.md) | 强制在任何写入操作前执行所有 Firestore 交易读取操作 | ✅ |  |  |  |  |
| [平按键](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/flatten-push-calls.md) | 将连续的对同一阵列的调用合并为多个参数的一次调用. | ✅ |  | 🔧 |  |  |
| [通用启动- t](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/generic-starts-with-t.md) | 强制使用 TypeScript 通用类型参数从 T 开始, 这样它们就远离运行时值 . | ✅ |  |  |  |  |
| [全局风格](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/global-const-style.md) | 执行 UPPER SNAKE CASE 并用作全球静态常数的集合 | ✅ |  | 🔧 |  |  |
| [jsdoc - 以上战地](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/jsdoc-above-field.md) | 要求JSDoc区块坐到球场上方,而不是排入后方,因此IDE会盘旋地表显示文件. | ✅ |  | 🔧 |  |  |
| [仅按键最外元素](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/key-only-outermost-element.md) | 强制使列表渲染中只有最外层元素有密钥道具 | ✅ |  | 🔧 |  |  |
| [逻辑自上而下分组](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/logical-top-to-bottom-grouping.md) | 执行逻辑上下组合相关语句 | ✅ |  | 🔧 |  |  |
| [备忘录比较-深度复杂-道具](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/memo-compare-deeply-complex-props.md) | 建议对接收对象/阵列道具的记忆分解组件进行深度比较,以避免浅比较重置. | ✅ |  | 🔧 |  | 💭 |
| [备忘-反应-组件](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/memo-nested-react-components.md) | 在渲染体、钩子或被传递为道具中定义的否定反应组件 | ✅ |  |  |  |  |
| [记忆 - 根- 层 - 层](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/memoize-root-level-hocs.md) | 防止在 React 组件/ hooks 的根层创建更高顺序组件,而不将它们包裹在使用Memo 中,以保持包裹的组件特性在相间稳定. | ✅ |  |  |  |  |
| [无总是真实的假条件](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-always-true-false-conditions.md) | 检测那些总是真实的 或总是病态的条件 | ✅ |  |  |  |  |
| [无阵列长度](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-array-length-in-deps.md) | 检测数组. 长度条目在 React hook 依赖数组中,因为长度忽略了内容变化; 通过使用Memo 的 surfaceHash( array) 记忆自动修正, 并取决于散列 . | ✅ |  | 🔧 |  |  |
| [无同步阵列过滤器](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-async-array-filter.md) | 在 Array.filter () 中取消 async 调用 。 Async 上游将总是真实的许诺还给过滤器,所以没有任何元素被移除. 首先解决同步检查(保证.all + map),或者使用同步的上游来决定要保存哪些项目. | ✅ |  |  |  |  |
| [无同步预览](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-async-foreach.md) | 取消对 Array 的自动调用。 每一次 | ✅ |  |  |  |  |
| [无循环参考](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-circular-references.md) | 在对象中取消循环引用 | ✅ |  |  |  |  |
| [无等级结构](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-class-instance-destructuring.md) | 减少类别实例的结构,防止损失 `this` 上下文 | ✅ |  | 🔧 |  |  |
| [无复合-云-参数](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-complex-cloud-params.md) | 拒绝将复杂对象传递到云函数 | ✅ |  |  |  |  |
| [无组合层道具](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-compositing-layer-props.md) | 阻碍强制GPU堆肥层的CSS属性(如变形,滤取,会变等). 外层会消耗GPU内存并分拆渲染工作,在一页被喷出时会减慢滚动和动画. 该规则检查了内在样式对象和MUI sx道具,因此地层提升保持有意而非偶然. | ✅ |  |  |  |  |
| [无条件升入jsx](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-conditional-literals-in-jsx.md) | 与JSX其他文本相比. | ✅ |  |  |  |  |
| [无控制台错误](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-console-error.md) | Disallow Coper.error 这样的错误通过结构化处理流出(HttpsError/使用前端的ErrorAlert,后端的结构化日志). | ✅ |  |  |  |  |
| [无弯曲的裂纹-环绕自带财产](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-curly-brackets-around-commented-properties.md) | 取消只将被评论成员包装在类型声明内的卷卷轴标记块 | ✅ |  | 🔧 |  |  |
| [无直接功能状态](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-direct-function-state.md) | 防止将一个函数直接传递给一个使用状态设置器——React将引用它作为功能更新器而不是存储. 在 tunk 中环绕: set State (() QQ fn) . | ✅ |  | 🔧 |  |  |
| [无空依赖-召回使用](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-empty-dependency-use-callbacks.md) | Discourg 使用 Callback( \[\]) 或围绕静态函数使用 LatestCallback 。 静态回调不需要钩子机械——将其提取到模块级公用事业中,以便明确并避免不必要的钩子起落架. | ✅ |  | 🔧 |  |  |
| [无实体对象读取器](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-entire-object-hook-deps.md) | 在React ch钩依赖数组中避免使用整个对象. | ✅ |  | 🔧 |  | 💭 |
| [无过多的父母链](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-excessive-parent-chain.md) | 在Firestore和实时DB更改处理器中过度使用Ref.parent属性链 |  |  |  | 💡 |  |
| [无显式返回类型](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-explicit-return-type.md) | 当 TypeScript 可以推断函数时, 取消对函数的明确返回类型说明 。 这在利用TypeScript强大的类型推论的同时减轻了代码动词和维护负担. 类型警卫职能例外(使用 `is` 关键字),递归函数,超载函数,界面方法,以及显性类型能提高清晰度的抽象方法. | ✅ |  | 🔧 |  |  |
| [无填充- template- mutation 语句](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-fill-template-mutation.md) | 通过字符串集合,模板字元,或字符串方法调用,否定了fillTemplate()的返回值. 填充的 Algolia 过滤器必须使用逐字记录, 以便匹配Template( ) , 使其匹配; 填充后的修改静默地打破实时散列等值 . | ✅ |  |  |  |  |
| [无过滤器不返回](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-filter-without-return.md) | Disallow Array.filter 调用未明确返回(如果是块语句的一部分) | ✅ |  |  |  |  |
| [无消防站 - 夹克](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-firestore-jest-mock.md) | 防止在测试文件中导入起火点- 起火点 | ✅ |  | 🔧 |  |  |
| [无火炉物体阵列](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-firestore-object-arrays.md) | Firestore模型中对象类型的解析数组. 偏好由有索引字段的 id 键入的录音地图,或 ID 的子集/阵列. | ✅ |  |  |  |  |
| [无后缀](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-handler-suffix.md) | 取消调用名称中通用的“ 处理器” 后缀, 所以名称解释它们执行的动作 | ✅ |  |  |  |  |
| [无病与残疾](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-harness-coupled-disables.md) | Disallow eslint-disable 说明代理开发工具(worktree、cwd、stop-hook、claude)而不是代码本身的语义. | ✅ |  |  |  |  |
| [无饥饿者](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-hungarian.md) | 在本地声明的变量、类型和类别中否定匈牙利语标记 | ✅ |  |  |  |  |
| [无内置组件-道具](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-inline-component-prop.md) | 防止在渲染中定义的内线函数组件被传递给CatalogWrapper等组件类型的道具来避免重挂和UI闪出. | ✅ |  |  |  |  |
| [没有jsx-in-hoks](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-jsx-in-hooks.md) | 防止钩子返回JSX | ✅ |  |  |  |  |
| [无-jsx-白色空间-升](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-jsx-whitespace-literal.md) | 停止使用 {'} JSX 代码中的元素 | ✅ |  |  |  |  |
| [无边际财产](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-margin-properties.md) | 防止边距属性(边距、边距、边距、边距、边距、边距、边距Top、边距Bottom、mx、我的等)出现在MUI的样式中,因为边距与容器控制的间隔、双沟和错配的断点相搏;使间隔与垫装、间隙或间隔道具保持集中. | ✅ |  |  |  |  |
| [静态无记忆](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-memoize-on-static.md) | 在静态方法上防止使用 @ memoize () 装饰器 | ✅ |  |  |  |  |
| [无错误引导- 布尔前缀](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-misleading-boolean-prefixes.md) | 为实际返回布尔值的函数保留布尔式前缀(is/has/should)来避免误导呼叫站点. | ✅ |  |  |  |  |
| [无误用- switch- case](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-misused-switch-case.md) | 防止在切换语句中滥用逻辑OR(QQ),这会导致混淆和容易出错的代码. 与其在大小写表达式中使用OR运算符,不如按顺序使用多个大小写来处理多值. 这提高了代码的可读性并遵循了标准的开关大小写模式. | ✅ |  |  |  |  |
| [无混合火炉交易](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-mixed-firestore-transactions.md) | 防止在交易中混合交易和非交易的火炉操作 | ✅ |  |  |  |  |
| [无烟火基地指挥官](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-mock-firebase-admin.md) | 防止直接嘲笑消防基地Admin;代之以使用共享测试助手 | ✅ |  |  |  |  |
| [无对象值上弦](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-object-values-on-strings.md) | Disallow Object.values () 在字符串上将字符串视为字符数组,这很可能是意外的行为. | ✅ |  |  |  |  |
| [不可逾越的方法调用建筑师](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-overridable-method-calls-in-constructor.md) | 拒绝在构造器中调用压倒性方法以防止出乎意料的行为 | ✅ |  |  |  |  |
| [无通道获取器](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-passthrough-getters.md) | 避免仅仅在构造器注入对象上再暴露嵌入属性而不添加行为的方法 | ✅ |  |  |  |  |
| [无端端式工具提示](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-portal-inside-tooltip.md) | Disallow门户网站-上交组件(Dialog, Drawer, Menu, Popover, Portal, Modal)在工具提示包组件内部. React Portals 保存 React-tree 事件起伏,所以在工具提示下嵌入的传送门让工具提示在模式上成为了孤儿. | ✅ |  |  |  |  |
| [无冗余说明](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-redundant-annotation-assertion.md) | 拒绝将类型注释与相同值的相同类型断言结合起来。 保留一个单一的真相来源来避免多余的可以分道扬镳的种类声明. | ✅ |  | 🔧 |  | 💭 |
| [无冗余-布尔-召回道具](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-redundant-boolean-callback-props.md) | 取消重复可选回调道具语义的冗余布尔道具,违反了界面隔离原则. | ✅ |  |  |  |  |
| [无冗余参数类型](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-redundant-param-types.md) | 取消冗余参数类型说明 | ✅ |  | 🔧 |  |  |
| [无多余的- 此参数](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-redundant-this-params.md) | 将流过类例成员(this.foo)降低到类例方法;代之以在方法内从中访问成员. | ✅ |  |  |  |  |
| [无多余的使用召回-包装](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-redundant-usecallback-wrapper.md) | 防止在额外使用中从钩子/折叠中将已经记忆/稳定的回调包起来 Callback() | ✅ |  | 🔧 |  |  |
| [无投降功能组件](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-render-function-components.md) | 拒绝宣布本地 `render*` 函数返回 JSX 并将其消耗为平面函数(直接调用或数组输入回调); 作者将其消耗为 JSX 提供的真正组件 | ✅ |  |  |  |  |
| [无请求](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-res-error-status-in-onrequest.md) | 禁止发送 4xx/5xx 在请求处理器上表达内部的响应; 将结构化的 HttpsError 实例扔出, 这样包装器可以一致格式化、 日志化和映射错误 . | ✅ |  |  |  |  |
| [无限制财产](https://npmcn.com/package/%40blumintinc/eslint-plugin-blumint/docs/rules/no-restricted-properties-fix.md) | 取消某些对象上的某些属性, 对对象. keys () 和 Object. values () 的特殊处理 |  |  |  |  |  |
| \[不满意的前端散 |  |  |  |  |  |  |

## 常见问题

### @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。作者已将其标记为弃用，新项目建议寻找替代方案。

