Skip to content

基线层 ​

规则全部为 ESLint 内置规则(不依赖任何插件),以 Neostandard 的社区基线为主,覆盖代码安全与潜在错误,随任意配置默认启用。

标记说明:🔧 可通过 eslint --fix 自动修复 · 💡 在编辑器中提供修复建议。

严格相等(eqeqeq) 🔧 💡 ​

约定使用 === / !==,避免隐式类型转换带来的意外。

不推荐
js
const valid = a == 1
推荐
js
const valid = a === 1

禁用 var(no-var) 🔧 ​

约定用 const / let 取代 var。

不推荐
js
var count = 0
推荐
js
let count = 0

优先 const(prefer-const) 🔧 ​

从未重新赋值的变量约定使用 const。

不推荐
js
let name = 'lintspec'
推荐
js
const name = 'lintspec'

对象简写(object-shorthand) 🔧 ​

约定使用对象属性与方法简写。

不推荐
js
const user = { id: id, getName: function () {} }
推荐
js
const user = { id, getName() {} }

禁止抛出字面量(no-throw-literal) ​

约定只抛出 Error 对象,不抛出字面量。

不推荐
js
throw 'something went wrong'
推荐
js
throw new Error('something went wrong')

禁止 Yoda 条件(yoda) 🔧 ​

约定条件表达式变量在前。

不推荐
js
if (1 === status) {
  retry()
}
推荐
js
if (status === 1) {
  retry()
}

禁止无意义的重命名(no-useless-rename) 🔧 ​

约定不要把解构 / 导入 / 导出重命名为同名。

不推荐
js
const { id: id } = user
推荐
js
const { id } = user

禁止未使用变量(no-unused-vars) 💡 ​

约定不保留未使用的局部变量。函数参数和 catch 绑定不在默认检查范围内,避免为了规则批量改签名或重命名。

不推荐
js
const unused = createValue()
export const used = 1
推荐
js
export const used = createValue()

禁止 void 表达式(no-void) ​

不允许用 void 丢弃函数返回值,尤其不能用 void promise() 把异步调用伪装成已处理。

不推荐
ts
void saveChanges()
推荐
ts
await saveChanges()

若确实要忽略 Promise,应显式说明错误处理策略,例如使用 catch。TypeScript 项目建议同时开启 typescript.typeAware。

文件最大行数(max-lines) ​

约定单个文件不宜过长,过长往往意味着职责过多、应当拆分。由 maxLines 选项控制上限(默认 500 行,统计时跳过空行与注释),超出仅 warn 提示、不阻断。

不推荐
js
// utils.js —— 把所有工具函数塞进一个文件(620 行)
export function a() {}
export function b() {}
// …此处省略 600+ 行
推荐
js
// 按职责拆成多个小文件
import { a } from './utils/a'
import { b } from './utils/b'

通过 maxLines 选项调整上限或关闭(详见 配置项总览):

js
// eslint.config.js
export default lintspec({
  maxLines: 800, // 放宽到 800 行
  // maxLines: false, // 或彻底关闭
})

TIP

基线层还包含大量安全相关规则(no-eval、no-self-compare、no-unsafe-*、use-isnan 等),完整列表见 全部规则 或 配置源码。