@deslop /编码标准
仅语法的Vite+ lint预设,具有Effect诊断的严格编译器配置,以及Claude Code和Codex的三个技能: lint-companion, pull-requests 和 review. 在已发布的版本上安装 writing-code 留下那个目录;删除它。
Vite+拥有语法检查和插件编写api;效果补丁tsrs拥有编译器诊断。
vpx @deslop/coding-standards@latest
vp add -D @deslop/coding-standards@latest @effect/tsgo@latest tsrs@latest
import {defineConfig} from 'vite-plus'
import {lint} from '@deslop/coding-standards'
export default defineConfig({lint: {extends: [lint]}})
// package.json
{
"scripts": {
"prepare": "effect-tsgo patch --no-typescript --tsrs",
"typecheck": "tsrs --noEmit --checkerAssignment go",
"check": "vp check && vp run typecheck"
}
}
// tsconfig.json
{"extends": "@deslop/coding-standards/tsconfig.json"}
- 项目设置 去旁边
extends;预设不忽略任何内容,所以添加**/*.gen.ts对你自己的忽视。 - 本地规则 根据名称,每个类别都被取消:工具升级没有选择。删除规则来自本地插件注册表,没有第二个名称列表。本土规则拥有它们所能表达的东西;自定义规则涵盖了剩余的Effect和React契约。
- 语法。
typescript插件规则,例如no-explicit-any,consistent-type-imports和method-signature-style不需要类型信息;typeAware: false禁用推断类型规则,例如no-floating-promises;typeCheck: false将编译器错误留给特效补丁tsrs检查。
收集的性能
no-accumulating-copy 检查内联效果 Array.reduce/reduceRight 回调,包括嵌套回调中捕获的累加器读取:
-Array.reduce(items, [], (all, item) => [...all, transform(item)])
+Array.map(items, transform)
- 也标志 效果数组追加/前置,
Record.set计算机键记录传播开来。 - 而不是:
Array.mapAccum对于状态选择;MutableList/MutableHashMap适合当地收藏家。 - 有效的:标量折叠,持久化
HashMap.set,非计算对象属性更新。 - 有意的 快照、有界窗口或有界键集采用合理的内联禁用;这条规则没有推断出增长,也没有改写任何内容。
Array.contains结构;用于身份识别Array.containsWith(Equivalence.strictEqual()),因为只有语法的预设不能推断出预期的相等性。