@aval-adr/eslint-config

中文文档
0.13.0发布于 2026/10/31MITTypeScriptES Module构建来源已验证

ESLint平面配置为一个筛选器完全匹配的确定的代码规则(ADR-0044)

中文使用文档
文档目录4 节
  1. 规则和各自执行的决定规则
  2. 缩小了,为什么?
  3. 递延
  4. 依赖关系

@aval-adr / eslint-config

ESLint平面配置用于筛选器匹配的确定代码规则(ADR-0044) 完全正确。版本控制 adr-lint 板条箱。

import { adrLint, adrLintTyped } from "@aval-adr/eslint-config";

export default [
  ...adrLint({
    restrictedImports: [
      { files: ["src/domain/**"], paths: ["fs"], patterns: [{ group: ["@mui/*"] }] },
    ],
  }),
];
  • adrLint({ restrictedImports = [] }) 返回配置数组。每个条目是 { files?, paths?, patterns? };相同的条目 files (缺席=全部 文件)被连接到一个 @typescript-eslint/no-restricted-imports 选项,因为平面配置只保留规则的最后一个选项。没有条目, 没有这样的东西。
  • adrLintTyped(options) 是 adrLint(options) 加上类型化规则 switch-exhaustiveness-check 和 parserOptions.projectService: true;它 需要一个 tsconfig.json. adrLint 单独不设置类型化规则和parserOptions。

规则和各自执行的决定规则

规则决定规则
linterOptions.reportUnusedDisableDirectives: "error"general.no-disabled-safety
@typescript-eslint/ban-ts-comment (ts-expect-error: allow-with-description, ts-ignore, ts-nocheck 禁止)general.no-disabled-safety
@eslint-community/eslint-comments/no-unlimited-disable, require-description, disable-enable-pairgeneral.no-disabled-safety
adr-lint/no-swallowed-catcherrors.never-swallowed
@typescript-eslint/no-restricted-imports (从 restrictedImports)architecture.dependency-rule, domain.independent-of-infrastructure
@typescript-eslint/switch-exhaustiveness-check (输入)types.exhaustive-matching

缩小了,为什么?

  • errors.never-swallowed: ESLint的 no-empty 标记每个空块,和 也 catch {} // why,这是规则主体允许的。 adr-lint/no-swallowed-catch 只报告一个 catch 在子句中没有任何语句和注释 (catch (e) /* why */ {} 包括)或在其右大括号行上。
  • general.no-disabled-safety: require-description 只问一个理由 压制指令; eslint-enable, global(s), exported 和 eslint-env 什么都不压抑,什么都不需要。

switch-exhaustiveness-check 保留其股票期权,这是规则主体: 一宗失踪案件即使在沉默的背后也有人报案 default,和一个完整的开关 谁的 default 分配给 never 传球。

递延

  • components.acyclic-dependencies: import/no-cycle 是延迟的。它需要 eslint-plugin-import-x 每个消费者都有一个TS解析器,以及它的lint 时间是无法衡量的。

依赖关系

  • @eslint-community/eslint-plugin-eslint-comments的家 disable-directive规则;拥有它们意味着解析指令注释 我们自己。它没有构建脚本,也没有运行时依赖项 escape-string-regexp 和 ignore;如果被抛弃,三条规则就会进入 adr-lint/ 在这里。
  • eslint 和 typescript-eslint 是消费者已经拥有的对等依赖项。

版本与发布记录

@aval-adr/eslint-config 共发布 10 个版本,首次发布于 2026/10/26;过去 12 个月发布了 10 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.13.0latest2026/10/312 天前
0.12.02026/10/313 天前
0.11.02026/10/304 天前
0.10.02026/10/295 天前
0.9.02026/10/285 天前
0.8.12026/10/277 天前

关于 @aval-adr/eslint-config 的常见问题

@aval-adr/eslint-config 是什么?

ESLint平面配置为一个筛选器完全匹配的确定的代码规则(ADR-0044)

如何安装 @aval-adr/eslint-config?

在项目目录运行 npm install @aval-adr/eslint-config,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:eslint(^9.0.0 || ^10.0.0)、typescript-eslint(^8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aval-adr/eslint-config 支持 TypeScript 吗?

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

@aval-adr/eslint-config 支持 ESM 还是 CommonJS?

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

@aval-adr/eslint-config 可以商用吗?

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

@aval-adr/eslint-config 还在维护吗?

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