@codacy/tools-slint-8 (英语)
目录
概览
使用 JavaScript/ TypeScript 接口 ESLint 8 (英语) 带有遗留配置格式( e).eslintrc) (中文(简体) ). 使用库执行策略——直接调用ESLint API,而不是产入子进程.
| 财产 | 数值 |
|---|---|
| 工具标识 | ESLint8 |
| 编码 UUID | f8b29663-2cb2-498d-b923-a10c6a8c05cd |
| 战略 | 图书馆 |
| 语文 | Java脚本, 类型脚本 |
| 依赖性 | eslint npm 包 (v8. x) + 90+ 插件包 |
| 模式 | 2816 (285个核心+2531个插件) |
| 文件图案 | **/*.js, (中文(简体) ), **/*.jsx, (中文(简体) ), **/*.ts, (中文(简体) ), **/*.tsx |
与ESLint 9的共存
此适配器安全地共存 @codacy/tools-eslint-9 在同一单体中
和相同的节点.js进程. 关键设计决定:
- pnpm 隔离:每个适配器有自己的
node_modules/eslint符号链接指向 到 pnpm 商店中不同的版本.import("eslint")从每个适配器 构建输出解析到正确的版本. - 内行类型: ESLint API 类型定义内置(不是从
eslint软件包)来避免类型脚本声明冲突. - 单独的插件注册: ESLint 8 vs 9 需要不同版本的插件
(例如:.
@typescript-eslint, (中文(简体) ),react-hooks)安装在正确的版本中 每个适配器自己的依赖. - 林特脚本: 将根的 ESLint 9 用于 Linting 源代码
(单位:千美元)
node ../../../node_modules/eslint/bin/eslint.js避免当地ESLint 8 二进制与根平面配置相冲突.
更新图案
# Re-fetch pattern metadata from the Codacy API
pnpm prefetch
# Commit the result
git add src/patterns.json
图案ID使用codacy-eslint编码: _ → __, (中文(简体) ), / → _实例:
ESLint8_no-unused-vars(核心规则)ESLint8_@typescript-eslint_no-unused-vars(扫描插件)ESLint8_react_jsx-no-target-blank(非范围插件)
更新 ESLint 版本
ESLint 8为报废(2024年10月). 预计不会更新版本 .
这个适配器的目标是最终的8.57.x发布. 对于更新的ESLint,请使用
eslint-9 适配器.
发展
pnpm build # Build with tsup
pnpm test # Run tests
维护者的注释
- 预设绘图
src/pattern-mappings.json(中文(简体) ):只有前缀.@stylisticJSX规则 住在楼下ESLint8_@stylistic_除了插件的框架不可知规则,所以react密钥名称ESLint8_@stylistic_jsx-明确的子前缀。 装饰标记这些 规则reactjs,但标记上的指向在这里是错误的: 相同的标记坐在这里ESLint8_functional_no-classes("任何地方没有ES6课"),css-modules_no-undef-class财务报告和审定财务报表test-selectors_onChange,这些都不是反应规则——和因为filterAutoPatterns匹配密钥的 ORs, 标记也会被其他密钥所拥有规则前缀拖动 完全没有。 在普通的React登录表上测量,标签Gating得出了来自 规则项目没有理由允许。 Vue SFC 自定义块的相同推理 规则,命名为ESLint8_jsonc_vue-custom-block编号 :ESLint8_yml_vue-custom-block。 。 。 . - ESLint 8 使用该程序 遗留配置 格式 (单位:千美元)
.eslintrc.*) (中文(简体) ). 适配器生成 常规对象配置plugins作为字符串名称,parser作为一个绝对的道路, 财务报告和审定财务报表overrides用于 TypeScript 特定配置. - 没有可执行配置文件数字 :
.eslintrc.js, (中文(简体) ),.eslintrc.cjs,无扩展.eslintrc不包括在本地配置检测中,因为这些格式可以 直接执行repo控制代码. 只有静态格式( E).eslintrc.yaml, (中文(简体) ),.eslintrc.yml, (中文(简体) ),.eslintrc.json)被检测出。 注:这不能完全消除 启用本地配置时执行代码 —— ESLint 遗留配置字段类似extends财务报告和审定财务报表parser仍然可以决心重新控制模块. - 插件分辨率数字 :
resolvePluginsRelativeTo在这个适配器的 ESLint 点数 软件包根,所以它可以在我们中找到插件node_modules而不是用户的回购. - 总是在 TS 解析器上覆盖页:1
.ts/.tsx覆盖到@typescript-eslint/parser当任何规则被启用时总是创建的,而不只是当@typescript-eslint规则 在场。 这确保所有插件( 例如) .jsdoc)可以分析 TypeScript 文件 和核心规则一样no-redeclare财务报告和审定财务报表no-undef无条件 为 TS 文件禁用(TypeScript 的编译器以本地方式处理它们). - 没有
project: true: TS 解析器覆盖不使用project: true因为 没有时失败tsconfig.json覆盖目标文件。 多数@typescript-eslint规则工作没有类型信息; 类型意识规则优雅地降解. - 图案 ID使用与codacy-slint包装器相同的编码:
_→__接下来/→_(encode),为解码的倒转. - 这个
blacklist.ts包含已知的崩溃 ESLint 或产生严重虚假的规则 阳性,与ESLint 9适配器黑名单共享. checkAvailability验证装入的 ESLint 版本的起始8.改为 防止意外使用ESLint 9.- 工具为 npm 有效载数,而不是依赖性:在运行时解决(Codacy管理安装)
~/.codacy/tools/<id>/页:1CODACY_TOOL_ROOT_<ID>root, 或此软件包本身node_modules(在单体)和install运行npm ci对所犯payload/package-lock.json。见src/payload.ts。 。 。 .