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()