防牛林- 配置- 防活性
一个非官方港口 苏卡W'lint 预设( e)eslint-config-sukka 9.1.0+ (单位:千美元)
eslint-plugin-vibe-proof 1.1.0)改为:
奥克林特 财务报告和审定财务报表 氧化剂。 。 。 .
未由Sukka出版或认可;此处报告出问题,而非上游.
- 大部分规则是牛林的原生(Rust)规则,包括通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通
oxlint-tsgolint。 。 。 . - 规则oxlint没有作为原始的ESLint插件通过oxlint的JS插件支持运行. 检查后报告ESLint的报告内容.
- 格式化由 oxfmt 代替
@stylistic。 。 。 .
安装
pnpm add -D oxlint @caxerx/oxlint-config-vibeproof
pnpm add -D oxlint-tsgolint # optional: type-aware rules (recommended for TypeScript projects)
pnpm add -D oxfmt # optional: formatting
需要节点js 22.18(牛林负载) .ts 配置带有节点类型剥取的文件).
使用量
// oxlint.config.ts
import { defineConfig } from 'oxlint';
import { sukka } from '@caxerx/oxlint-config-vibeproof';
export default defineConfig({
extends: [sukka()],
rules: {
// your overrides
}
});
// oxfmt.config.ts
import { defineConfig } from 'oxfmt';
import { oxfmt } from '@caxerx/oxlint-config-vibeproof/oxfmt';
export default defineConfig(oxfmt());
npx oxlint # type-aware rules run automatically when oxlint-tsgolint is installed
npx oxfmt
牛林只发现 oxlint.config.ts (或 .oxlintrc.json自动。 需要其它文件名 -c。 。 。 .
选项
选项和自动检测相同 eslint-config-sukka是因为 sukka()。每个预设接受 true, (中文(简体) ), false,或选项对象;当被忽略时,会根据您的工程已安装的内容启用.
| 选项 | 默认 | 页:1 |
|---|---|---|
js | true | { disableNoConsoleInCLI, env: { browser, webextensions, greasemonkey, customGlobals } }。 。 。 . module 可从 package.json "type"。 。 。 . |
ts | 若为 typescript 或者说 @types/node 已安装 | { allowJs, componentExtensions, typeAware }。 。 。 . typeAware 默认是否 oxlint-tsgolint 已安装. |
react | 若为 react, (中文(简体) ), @types/react 或者说 next 已安装( 需要) ts(中文(简体) ) | { files, additionalHooks, additionalHooksWithType, additionalComponents, nextjs, remix, reactRefresh: { allowConstantExport } } |
next | 若为 next 已安装 | |
stylex | 若为 @stylexjs/stylex 或者说 stylex-webpack 已安装 | { opt },转至 @stylexjs/eslint-plugin |
node | 若为 @types/node 或者说 @types/bun 已安装 | { strict, module, files } |
legacy | false | { browser, node, files } |
ignores | 内置软块 | { customGlobs }。 。 。 . .gitignore 总是被克林特所尊崇. |
stylistic | true | 少有的风格规则不能执行 |
cwd | process.cwd() | 查找安装的软件包 |
oxfmt({ printWidth })数字 : printWidth 默认为120.
从 Eslint-config- sukka 迁移
使用该工具的项目的分步骤指南 eslint-config-sukka (有无) eslint-plugin-vibe-proof) (中文(简体) ).
选项是 上文;没有覆盖的是 下级。 。 。 .
1. 交换依赖关系
pnpm remove eslint eslint-config-sukka eslint-plugin-vibe-proof # plus any @eslint-sukka/* packages you added
pnpm add -D oxlint @caxerx/oxlint-config-vibeproof
pnpm add -D oxlint-tsgolint # type-aware rules; recommended for TypeScript projects
pnpm add -D oxfmt # formatting, replaces @stylistic
需要22.18节点.
2. 替换配置
// before: eslint.config.js
import { sukka } from 'eslint-config-sukka';
export default sukka({ react: { nextjs: true } }, {
rules: { 'no-console': 'off' }
});
// after: oxlint.config.ts
import { defineConfig } from 'oxlint';
import { sukka } from '@caxerx/oxlint-config-vibeproof';
export default defineConfig({
extends: [sukka({ react: { nextjs: true } })],
rules: { 'no-console': 'off' }
});
// oxfmt.config.ts
import { defineConfig } from 'oxfmt';
import { oxfmt } from '@caxerx/oxlint-config-vibeproof/oxfmt';
export default defineConfig(oxfmt());
sukka()选择相同的选项,自动检测相同的预设.- 在选项成为克林特的后通过的额外平面配置对象
rules财务报告和审定财务报表overrides。 。 。 . 对象为files变成overrides: [{ files: [...], rules: {...} }]。 。 。 . - 规则标识大多保持不变。 奥克林特匹配
@typescript-eslint/x, (中文(简体) ),import-x/x, (中文(简体) ),unicorn/x和它的原生规则 规则名称. 现在以另一个名字运行的66个列在data/directive-compat.json,例如camelcase→sukka-compat/camelcase。 。 。 . - 删除
eslint.config.js.牛林只发现oxlint.config.ts(或.oxlintrc.json自动;其他名称需要-c。 。 。 . .gitignore永远是荣誉,所以大多数ignores条目可以去.
3. 重写禁用注释
牛林听得懂吗 eslint-disable* 评论,所以大多数继续工作。 命名一条在新名称下运行的规则的评论需要重写 :
npx oxlint-config-vibeproof-migrate --dry-run # preview
npx oxlint-config-vibeproof-migrate # rewrite in place
注释命名一条没有牛林版本的规则,例如 jsonc/* 财务报告和审定财务报表 yml/* 规则或规则 @stylistic/* 规则取而代之的是"牛",
报告为未使用。 手工删除; 代码为您计数 .
4. 更新脚本、CI和编辑
// package.json
"scripts": {
"lint": "oxlint", // was: eslint .
"lint:fix": "oxlint --fix", // was: eslint . --fix
"format": "oxfmt",
"format:check": "oxfmt --check"
}
- CI: 运行
oxlint --deny-warnings财务报告和审定财务报表oxfmt --check添加npx oxlint-config-vibeproof-migrate --check当一个禁用注释需要迁移时失败. - 阶段/ 承诺前钩: 互换
eslint --fix页:1oxlint --fix财务报告和审定财务报表oxfmt。 。 。 . - VS 代码: 以 oxc 扩展,它同时运行牛林和牛绒.
5. 格式化和审查
运行 npx oxfmt 将结果分开执行,这样重塑就容易跳入 git blame
(承诺 .git-blame-ignore-revs) (中文(简体) ). 可见的样式变化是接口和以 ;, (中文(简体) ),
function* g() 改为 function *g(),以及一些断行选择;见 文档/stylistic-oxft.md。 。 。 .
然后运行 npx oxlint。期望与ESLint的微小差异;每个已知的差异都按其原因列出于
packages/harness/allowlist.json。 。 。 .
从0.1升级
- 软件包从 GitHub 软件包移到 npm. 删除
@caxerx:registry=https://npm.pkg.github.com从.npmrc并重新安装. react-hooks/config财务报告和审定财务报表react-hooks/gating不再运行eslint-plugin-react-hooks不再是一种依赖. 没有这个预设从未设置的选项, 任何规则都无法报告 。 删除任何react-hooks-js/*从您的配置中输入并禁用注释.
未涵盖的内容
| 为什么 | |
|---|---|
贾森,耶美尔, package.json 财务报告和审定财务报表 pnpm-workspace.yaml 规则jsonc/*, (中文(简体) ), yml/*, (中文(简体) ), pnpm/*(中文(简体) ) | oxlint只提供JS/TS. oxfmt仍然为JSON和YAML格式. |
页:1 @stylistic 格式规则 | 替换为 oxfmt |
8个规则需要JS插件内的类型信息,例如. vibe-proof/no-indexof-equality 财务报告和审定财务报表 @eslint-react/no-leaked-conditional-rendering | oxlint给JS插件没有类型信息. 已跟踪 文件/规则 每周在CI调查一次. |
import-x/no-unresolved, (中文(简体) ), no-relative-packages, (中文(简体) ), no-useless-path-segments | TypeScript解析器无法从oxlint的JSON设置来配置. tsc已经报告未解决的进口. |
n/process-exit-as-throw | 它补齐了ESLint的密码路径分析, 牛林不使用 |
已知的与ESLint的区别, 每一个都有记载的克克林特行为或错误, 列在
packages/harness/allowlist.json实例:
- 导入 :
no-unused-vars还在TS文件中报告未使用的导入. - 反应 :
react/only-export-components缺少包含的组件React.memo(...)。 。 。 . - 防风: 7个规则运行时没有对其可选类型进行改进,因此可以报告几个非阵列接收器.
如何验证端口
packages/harness 运行 eslint-config-sukka 并按规则和线条比较他们的报告。 它还:
- 重播
eslint-plugin-vibe-proof自己的测试套房通过克林特; - 检查牛和保存
@stylistic规则不战斗; - 检测漂移时
eslint-config-sukka变化; - 测试哪些旧的已禁用代码仍然匹配 .
贷项
规则选择、规则选项和 ESLint 插件 预设运行是 苏克卡 (苏克瓦)数字 :
eslint-config-sukka, (中文(简体) ), eslint-plugin-vibe-proof
财务报告和审定财务报表 eslint-plugin-sukka。这个软件包只让他们适应克林特.
许可证
麻省理工学院. 规则配置从麻省理工学院许可的eslint-config-sukka和eslint-plugin-vibe防伪;见 第三次议会提名(md)。 。 。 .