@fast-china/eslint-config 2.1.7 → 2.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +103 -144
- package/README.zh.md +101 -144
- package/dist/configs/environment.mjs +2 -0
- package/dist/configs/environment.mjs.map +1 -1
- package/dist/configs/ignores.mjs +0 -1
- package/dist/configs/ignores.mjs.map +1 -1
- package/dist/configs/import.mjs +4 -1
- package/dist/configs/import.mjs.map +1 -1
- package/dist/configs/index.d.mts +2 -2
- package/dist/configs/index.mjs +2 -2
- package/dist/configs/javascript.mjs +3 -1
- package/dist/configs/javascript.mjs.map +1 -1
- package/dist/configs/json.mjs +3 -1
- package/dist/configs/json.mjs.map +1 -1
- package/dist/configs/markdown.d.mts +2 -1
- package/dist/configs/markdown.mjs +4 -2
- package/dist/configs/markdown.mjs.map +1 -1
- package/dist/configs/prettier.mjs +1 -1
- package/dist/configs/prettier.mjs.map +1 -1
- package/dist/configs/sort-package.d.mts +1 -1
- package/dist/configs/sort-package.mjs +1 -1
- package/dist/configs/sort-package.mjs.map +1 -1
- package/dist/configs/sort-tsconfig.d.mts +2 -2
- package/dist/configs/sort-tsconfig.mjs +2 -2
- package/dist/configs/sort-tsconfig.mjs.map +1 -1
- package/dist/configs/typescript.d.mts +11 -7
- package/dist/configs/typescript.mjs +25 -22
- package/dist/configs/typescript.mjs.map +1 -1
- package/dist/configs/uniapp.mjs +19 -13
- package/dist/configs/uniapp.mjs.map +1 -1
- package/dist/configs/vue.d.mts +18 -3
- package/dist/configs/vue.mjs +61 -9
- package/dist/configs/vue.mjs.map +1 -1
- package/dist/constants/index.d.mts +4 -0
- package/dist/constants/index.mjs +5 -1
- package/dist/constants/index.mjs.map +1 -1
- package/dist/index.d.mts +37 -58
- package/dist/index.mjs +43 -47
- package/dist/index.mjs.map +1 -1
- package/dist/rules/angular.d.mts +28 -0
- package/dist/rules/angular.mjs +28 -0
- package/dist/rules/angular.mjs.map +1 -1
- package/dist/rules/common.d.mts +16 -6
- package/dist/rules/common.mjs +16 -13
- package/dist/rules/common.mjs.map +1 -1
- package/dist/rules/import.d.mts +9 -0
- package/dist/rules/import.mjs +24 -0
- package/dist/rules/import.mjs.map +1 -1
- package/dist/rules/index.d.mts +2 -2
- package/dist/rules/index.mjs +2 -2
- package/dist/rules/javascript.d.mts +18 -0
- package/dist/rules/javascript.mjs +18 -0
- package/dist/rules/javascript.mjs.map +1 -1
- package/dist/rules/lodash.d.mts +2 -0
- package/dist/rules/lodash.mjs +6 -2
- package/dist/rules/lodash.mjs.map +1 -1
- package/dist/rules/react.d.mts +13 -0
- package/dist/rules/react.mjs +13 -0
- package/dist/rules/react.mjs.map +1 -1
- package/dist/rules/regexp.d.mts +25 -0
- package/dist/rules/regexp.mjs +25 -0
- package/dist/rules/regexp.mjs.map +1 -1
- package/dist/rules/sort-package.d.mts +3 -1
- package/dist/rules/sort-package.mjs +3 -1
- package/dist/rules/sort-package.mjs.map +1 -1
- package/dist/rules/sort-tsconfig.d.mts +3 -1
- package/dist/rules/sort-tsconfig.mjs +3 -1
- package/dist/rules/sort-tsconfig.mjs.map +1 -1
- package/dist/rules/typescript.d.mts +81 -13
- package/dist/rules/typescript.mjs +83 -15
- package/dist/rules/typescript.mjs.map +1 -1
- package/dist/rules/vue.d.mts +65 -10
- package/dist/rules/vue.mjs +41 -14
- package/dist/rules/vue.mjs.map +1 -1
- package/docs/engineering-audit.zh.md +45 -49
- package/docs/rules/angular.zh.md +721 -0
- package/docs/rules/core.zh.md +3031 -0
- package/docs/rules/index.zh.md +38 -0
- package/docs/rules/json.zh.md +784 -0
- package/docs/rules/markdown.zh.md +449 -0
- package/docs/rules/react.zh.md +2091 -0
- package/docs/rules/typescript.zh.md +2052 -0
- package/docs/rules/vue.zh.md +3016 -0
- package/docs/rules-risk.md +85 -91
- package/docs/rules-risk.zh.md +76 -82
- package/package.json +4 -2
|
@@ -1,66 +1,62 @@
|
|
|
1
1
|
# 工程质量审查报告
|
|
2
2
|
|
|
3
|
-
审查日期:2026-
|
|
3
|
+
审查日期:2026-09-14
|
|
4
4
|
|
|
5
|
-
审查对象:`@fast-china/eslint-config` 2.1.
|
|
5
|
+
审查对象:`@fast-china/eslint-config` 2.1.9 工作区
|
|
6
6
|
|
|
7
7
|
## 结论
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
当前配置已从“固定 Vue + UniApp 根预置”调整为根入口的两个独立具名完整配置,并将规则基线收敛到社区通用写法、简洁性和高置信度问题。普通 Vue 项目不再继承 UniApp globals、`.nvue` 解析、清单适配或 `unpackage` 忽略。
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- JavaScript、TypeScript、Import 和 RegExp 只有一套共享规则。
|
|
14
|
-
- `@/**` 根别名归入 internal;类型导入位于所有其他非样式导入之后,并在 type 总分组内按来源层级排序。
|
|
15
|
-
- 样式导入由独立规则约束为最后一个连续分组,不参与普通 import 字母排序,也不提供自动修复。
|
|
16
|
-
- TypeScript、Vue 和 React TypeScript 始终使用 `strictTypeChecked`、`stylisticTypeChecked` 与 Project Service。
|
|
17
|
-
- Vue 使用 `flat/recommended`,并叠加事件声明、kebab-case 属性、闭合标签和排序规则。
|
|
18
|
-
- RegExp 使用显式审查过的正确性与安全规则,不继承完整偏好型推荐集合。
|
|
19
|
-
- React 使用 `@eslint-react` 推荐预置和 React 官方 Hooks Recommended,并关闭重复实现。
|
|
20
|
-
- Angular 与官方 TypeScript、模板和无障碍推荐规则保持一致。
|
|
21
|
-
- 规则源码注释只说明当前意图;历史版本差异由更新日志维护。
|
|
11
|
+
TypeScript 不再叠加完整 strict/stylistic 类型预置,而是在 `recommendedTypeChecked` 之上明确选择高价值规则。`.ts`/`.tsx` 导出边界继续按 SDK 公共 API 严格检查,内部实现则使用类型推断。
|
|
22
12
|
|
|
23
|
-
##
|
|
13
|
+
## 公共入口
|
|
24
14
|
|
|
25
|
-
|
|
15
|
+
- 根入口:命名导出 `vueConfig`、`uniAppConfig`、三个项目工厂、`defineRules()`、`ProjectConfigOptions` 和 `RuleOptions`,不提供默认导出或框架子入口。
|
|
16
|
+
- `./configs`:React、Angular、Markdown、Lodash、清单排序及低层配置片段;完整配置默认包含清单排序。
|
|
17
|
+
- `./constants`、`./rules`:glob/globals 和原始规则记录。
|
|
26
18
|
|
|
27
|
-
|
|
28
|
-
- 只接收 `environment` 的 `fastConfig()`。
|
|
29
|
-
- `defineRules()`、`FastConfigOptions` 和 `RuleOptions`。
|
|
19
|
+
本轮不保留旧 `fastConfig()`、根默认导出或 `FastConfigOptions` 兼容层。
|
|
30
20
|
|
|
31
|
-
|
|
21
|
+
## 当前规则模型
|
|
32
22
|
|
|
33
|
-
|
|
23
|
+
- JavaScript、TypeScript、Import 和 RegExp 只有一套共享规则,SDK 与应用项目不设严格度档位。
|
|
24
|
+
- 完全空的 `catch` 被允许;其他空块继续报错。
|
|
25
|
+
- `no-void` 和 `require-await` 保持错误:不使用 `void` 规避检查,也不保留没有 `await`、会改变函数语义的 `async`。
|
|
26
|
+
- `camelcase: ["error", { properties: "never" }]` 保持错误,兼顾代码命名与外部协议字段。
|
|
27
|
+
- TypeScript 模块导出边界要求显式类型,内部函数返回类型不强制标注。
|
|
28
|
+
- `no-non-null-assertion` 和 `no-unnecessary-condition` 关闭,避免破坏标准断言和运行时防御。
|
|
29
|
+
- Import 位置、重复导入、成员顺序和声明顺序均为错误;保留常用 pathGroups,样式文件单独保持在最后。
|
|
30
|
+
- Vue 使用官方 `flat/recommended`,显式 emits、kebab-case、props 只读、关键正确性规则和属性顺序为错误,`v-html` 风险为警告。
|
|
31
|
+
- `package.json` 和 `tsconfig*.json` 排序保持为所有完整配置的基础能力。
|
|
34
32
|
|
|
35
33
|
## 工程能力
|
|
36
34
|
|
|
37
|
-
| 领域 | 状态 | 质量保障
|
|
38
|
-
| ------------- | ---- |
|
|
39
|
-
| 公共 API | 通过 |
|
|
40
|
-
| JavaScript | 通过 |
|
|
41
|
-
| TypeScript | 通过 |
|
|
42
|
-
| Vue 3 | 通过 |
|
|
43
|
-
| UniApp | 通过 |
|
|
44
|
-
|
|
|
45
|
-
| Angular
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
1. 内置忽略项和 `.gitignore`。
|
|
35
|
+
| 领域 | 状态 | 质量保障 |
|
|
36
|
+
| ------------- | ---- | ----------------------------------------------------- |
|
|
37
|
+
| 公共 API | 通过 | 根入口具名导出独立 Vue、UniApp 配置和工厂 |
|
|
38
|
+
| JavaScript | 通过 | recommended + 精选正确性和可读性规则 |
|
|
39
|
+
| TypeScript | 通过 | `recommendedTypeChecked` + Project Service + 边界规则 |
|
|
40
|
+
| Vue 3 | 通过 | `.vue` 独立 parser 扩展,不注入 UniApp |
|
|
41
|
+
| UniApp | 通过 | `.vue`/`.nvue`、globals、清单注释和独立忽略项 |
|
|
42
|
+
| Import | 通过 | 正确性、成员/声明顺序和样式末尾均为 error |
|
|
43
|
+
| React/Angular | 通过 | 从框架无关基础配置显式组合 |
|
|
44
|
+
| JSON/RegExp | 通过 | 方言解析与高置信度正确性、安全规则 |
|
|
45
|
+
| 清单排序 | 通过 | 默认启用并保留 `exports` 条件顺序 |
|
|
46
|
+
| 类型生成 | 通过 | 插件 schema 生成精确 `RuleOptions` |
|
|
47
|
+
| 构建发布 | 通过 | ESM、声明文件、根入口具名配置和根目录 `dist/` |
|
|
48
|
+
|
|
49
|
+
## 配置顺序
|
|
50
|
+
|
|
51
|
+
完整配置按以下顺序组合:
|
|
52
|
+
|
|
53
|
+
1. 全局忽略项和 `.gitignore`。
|
|
58
54
|
2. 应用运行环境与 Node.js 工程文件 globals。
|
|
59
55
|
3. Common、JavaScript、Import、RegExp、TypeScript 与 JSON。
|
|
60
|
-
4. `package.json`
|
|
61
|
-
5. Vue
|
|
56
|
+
4. `package.json` 与 `tsconfig*.json` 排序。
|
|
57
|
+
5. Vue 或 Vue + UniApp 的独立框架层。
|
|
62
58
|
6. Prettier 冲突关闭层。
|
|
63
|
-
7. Node.js
|
|
59
|
+
7. Node.js 工程文件末尾覆写。
|
|
64
60
|
8. 调用方后置 Flat Config。
|
|
65
61
|
|
|
66
62
|
## 发布前验证
|
|
@@ -71,12 +67,12 @@ pnpm check
|
|
|
71
67
|
pnpm pack --dry-run
|
|
72
68
|
```
|
|
73
69
|
|
|
74
|
-
|
|
70
|
+
发布归档必须包含根入口、`./configs`、`./constants` 和 `./rules`,不得包含源码缓存或本地依赖目录。CI 只负责验证,不自动发布 npm。
|
|
75
71
|
|
|
76
72
|
## 剩余风险
|
|
77
73
|
|
|
78
|
-
- 上游 recommended 会随依赖升级变化,升级 ESLint
|
|
74
|
+
- 上游 recommended 会随依赖升级变化,升级 ESLint 或插件后必须检查最终生效配置。
|
|
79
75
|
- 类型感知依赖 tsconfig 覆盖和 Project Service,复杂 monorepo 需要维护清晰的项目边界。
|
|
80
|
-
-
|
|
81
|
-
-
|
|
76
|
+
- `explicit-module-boundary-types` 会要求应用项目中的 `.ts`/`.tsx` 导出也按 SDK 公共接口显式标注,这是本项目有意选择的统一边界。
|
|
77
|
+
- ESLint 无法验证 UniApp 条件编译对象是否处于正确平台分支。
|
|
82
78
|
- `.uvue` 与 `.uts` 仍不在支持范围。
|