@yss123/cage-lint 0.4.0 → 0.4.1

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.
Files changed (2) hide show
  1. package/README.md +10 -54
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,74 +1,30 @@
1
1
  # @yss123/cage-lint
2
2
 
3
- Cage 的静态边界检查包。ESLint 规则检查手写业务路由、SQL 拼接、疑似密钥和缺少说明的 unsafe;dependency-cruiser 配置约束 domain、contracts、Web 与服务端的依赖方向。用于开发与 CI,不参与运行时授权。
3
+ Cage 的静态边界:ESLint 检查手写业务路由、SQL 拼接、疑似密钥和 unsafe 说明;dependency-cruiser 检查 domain、contracts、Web 与服务端依赖方向。
4
4
 
5
- ## 安装
5
+ ## 使用推荐规则
6
6
 
7
- 需要 Node.js 24+、ESLint 9;在应用根目录安装为开发依赖:
8
-
9
- ```powershell
10
- pnpm add -D @yss123/cage-lint eslint@^9 dependency-cruiser
11
- ```
12
-
13
- 脚手架项目已经包含对应依赖与检查配置,升级时保留应用现有扩展规则。
14
-
15
- ## 接入 ESLint
16
-
17
- 在 ESM 项目的 `eslint.config.js` 中使用 flat config:
7
+ Node.js 24+、ESLint 9,安装 pnpm add -D @yss123/cage-lint eslint@^9 dependency-cruiser。ESM 项目的 eslint.config.js:
18
8
 
19
9
  ```js
20
- /** 使用 Cage 推荐规则;后续可追加应用规则,不能为绕过门禁关闭边界检查。 */
21
10
  import cage from '@yss123/cage-lint';
22
11
 
12
+ /** 使用框架边界规则,应用可追加自身检查。 */
23
13
  export default [...cage.configs.recommended];
24
14
  ```
25
15
 
26
- 执行:
27
-
28
- ```powershell
29
- pnpm exec eslint packages apps
30
- ```
31
-
32
- 推荐配置包括 TypeScript/TSX 解析器,并排除依赖、构建产物、生成契约和 `.cage`。应从项目根目录运行,使相对路径规则与模板结构一致。
33
-
34
- ## 接入依赖方向检查
35
-
36
- 在项目根目录 `.dependency-cruiser.cjs` 中导出框架规则:
16
+ 依赖配置 .dependency-cruiser.cjs 使用公开子路径:
37
17
 
38
18
  ```js
39
- /** 沿用框架的模块边界;本文件只配置静态依赖分析,不改变运行权限。 */
40
19
  module.exports = require('@yss123/cage-lint/dependency-cruiser.cjs');
41
20
  ```
42
21
 
43
- 执行:
44
-
45
- ```powershell
46
- pnpm exec depcruise packages apps --config .dependency-cruiser.cjs
47
- ```
48
-
49
- 也可在完整脚手架中运行 `pnpm exec cage check`,结合声明、目录与图规则检查定位问题。
50
-
51
- ## 包含哪些规则
52
-
53
- | 规则/边界 | 目的 |
54
- | --- | --- |
55
- | `cage/no-manual-routes` | 普通业务通过声明生成路由,避免另写接口绕过统一流水线 |
56
- | `cage/no-sql-concat` | 拒绝可识别的 SQL 字符串拼接,使用参数化安全查询 |
57
- | `cage/no-secret-literal` | 检查疑似密钥字面量,真实值通过部署配置注入 |
58
- | `cage/unsafe-needs-reason` | unsafe 需记录原因与责任,供审查和预算追踪 |
59
- | domain 不直接 IO | 不导入文件/网络/数据库或 HTTP/文件服务实现 |
60
- | Web 不导入服务端 | 前端消费 contracts、client 和浏览器安全协议 |
61
- | domain 不反向依赖 contracts | 避免声明与生成契约形成依赖循环 |
62
- | 适配器不直接写库 | 外部结果仍回到领域命令 |
63
-
64
- 本包默认导出插件与 `configs.recommended`,另有命名导出 `rules`;依赖规则通过公开子路径 `@yss123/cage-lint/dependency-cruiser.cjs` 获取。
22
+ 从项目根目录运行 eslint packages apps 和 depcruise packages apps --config .dependency-cruiser.cjs;脚手架已配置相应依赖。
65
23
 
66
- 检查基于语法与约定目录,不能证明任意代码不存在漏洞、SQL 注入或秘密,也不能替代后端授权与数据库回归。出现诊断时阅读 `code/at/reason/fix` 并修正职责归属,不通过删除约束或禁用 lint 消除报错。
24
+ ## 检查范围
67
25
 
68
- ## 文档
26
+ cage/no-manual-routes 约束后端业务接口,不禁止 React Router。其他规则维护参数化 SQL、部署密钥和显式 unsafe 责任;领域不直接 IO,Web 不导入服务端,domain 不依赖 contracts。
69
27
 
70
- - [工程目录与模块组织](https://github.com/shunshunyue/cage/blob/main/docs/development/reference/project-structure.md)
71
- - [开发流程](https://github.com/shunshunyue/cage/blob/main/docs/development/getting-started/workflow.md)
72
- - [错误码册](https://github.com/shunshunyue/cage/blob/main/docs/errors/README.md)
28
+ 检查基于语法与约定目录,不能证明任意程序没有漏洞,也不代替服务端授权或数据库回归。按诊断修复真实职责与依赖,保持门禁有效。
73
29
 
74
- 源码与反馈:[GitHub](https://github.com/shunshunyue/cage)。许可证:[MIT](https://github.com/shunshunyue/cage/blob/main/LICENSE)。
30
+ [代码组织](https://github.com/shunshunyue/cage/blob/main/docs/development/reference/project-structure.md) · [错误码册](https://github.com/shunshunyue/cage/blob/main/docs/errors/README.md)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yss123/cage-lint",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "dependency-cruiser 规则与 ESLint 插件",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",