ESLint Drizzle 插件
对于无法在特定场景下执行类型检查,或者可以执行类型检查但错误消息难以理解的情况,我们决定创建一个包含推荐规则的 ESLint 包。此软件包旨在帮助开发者处理开发过程中的关键场景。
安装
npm
yarn
pnpm
bun
npm i eslint-plugin-drizzle @typescript-eslint/eslint-plugin @typescript-eslint/parser
用法
.eslintrc.yml 示例
root: true
parser: '@typescript-eslint/parser'
parserOptions:
project: './tsconfig.json'
plugins:
- drizzle
rules:
'drizzle/enforce-delete-with-where': "error"
'drizzle/enforce-update-with-where': "error"所有配置
此插件导出一个使用所有规则(已弃用规则除外)的 all。
root: true
extends:
- "plugin:drizzle/all"
parser: '@typescript-eslint/parser'
parserOptions:
project: './tsconfig.json'
plugins:
- drizzle推荐配置
目前,all 等同于 recommended
root: true
extends:
- "plugin:drizzle/recommended"
parser: '@typescript-eslint/parser'
parserOptions:
project: './tsconfig.json'
plugins:
- drizzle规则
enforce-delete-with-where
在 .delete() 语句中强制使用 delete 和 .where() 子句。大多数情况下,你无需删除表中的所有行,也无需使用某种 WHERE 语句。
你也可以选择在插件选项中定义一个接受 string 或 string[] 的 drizzleObjectName。当你的对象或类具有非 Drizzle 的删除方法时,这很有用。此类 delete 方法将触发 ESLint 规则。为了避免这种情况,你可以定义代码库中使用的 Drizzle 对象的名称(例如 db),以便仅当 delete 方法来自此对象时才会触发规则:
示例,配置 1:
rules:
'drizzle/enforce-delete-with-where': "error"class MyClass {
public delete() {
return {}
}
}
const myClassObj = new MyClass();
// ---> Will be triggered by ESLint Rule
myClassObj.delete()
const db = drizzle(...)
// ---> Will be triggered by ESLint Rule
db.delete()示例,配置 2:
rules:
'drizzle/enforce-delete-with-where':
- "error"
- "drizzleObjectName":
- "db"class MyClass {
public delete() {
return {}
}
}
const myClassObj = new MyClass();
// ---> Will NOT be triggered by ESLint Rule
myClassObj.delete()
const db = drizzle(...)
// ---> Will be triggered by ESLint Rule
db.delete()enforce-update-with-where:
在 .update() 语句中强制使用 update 和 .where() 子句。大多数情况下,你无需更新表中的所有行,也无需使用某种 WHERE 语句。
你也可以选择在插件选项中定义一个接受 string 或 string[] 的 drizzleObjectName。当你的对象或类具有非 Drizzle 的删除方法时,这很有用。例如 update 方法将触发 ESLint 规则。为了避免这种情况,你可以定义代码库中使用的 Drizzle 对象的名称(例如 db),以便仅当 delete 方法来自此对象时才会触发规则:
示例,配置 1:
rules:
'drizzle/enforce-update-with-where': "error"class MyClass {
public update() {
return {}
}
}
const myClassObj = new MyClass();
// ---> Will be triggered by ESLint Rule
myClassObj.update()
const db = drizzle(...)
// ---> Will be triggered by ESLint Rule
db.update()示例,配置 2:
rules:
'drizzle/enforce-update-with-where':
- "error"
- "drizzleObjectName":
- "db"class MyClass {
public update() {
return {}
}
}
const myClassObj = new MyClass();
// ---> Will NOT be triggered by ESLint Rule
myClassObj.update()
const db = drizzle(...)
// ---> Will be triggered by ESLint Rule
db.update()