ESLint Drizzle 插件
对于无法进行特定场景类型检查的情况,或者虽然可以进行但错误消息难以理解的情况,我们决定创建一个包含推荐规则的 ESLint 包。这个包旨在帮助开发人员在开发中处理关键场景。
安装
npm
yarn
pnpm
bun
npm i eslint-plugin-drizzle
npm i @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 条件。
可选地,您可以在插件选项中定义一个 drizzleObjectName,它可以接受一个 string 或 string[]。
这在您有删除方法的对象或类时很有用,而该删除方法不是来自 Drizzle。
这样的 delete 方法将触发 ESLint 规则。
为了避免这种情况,您可以定义您在代码库中使用的 Drizzle 对象的名称(例如 db),
这样规则仅在删除方法来自此对象时才会触发:
示例,配置 1:
rules:
'drizzle/enforce-delete-with-where': "error"class MyClass {
public delete() {
return {}
}
}
const myClassObj = new MyClass();
// ---> 将被 ESLint 规则触发
myClassObj.delete()
const db = drizzle(...)
// ---> 将被 ESLint 规则触发
db.delete()示例,配置 2:
rules:
'drizzle/enforce-delete-with-where':
- "error"
- "drizzleObjectName":
- "db"class MyClass {
public delete() {
return {}
}
}
const myClassObj = new MyClass();
// ---> 不会被 ESLint 规则触发
myClassObj.delete()
const db = drizzle(...)
// ---> 将被 ESLint 规则触发
db.delete()enforce-update-with-where:
强制在 .update() 语句中使用 update 和 .where() 子句。
大多数情况下,您不需要更新表中的所有行,
并需要某种 WHERE 语句。
可选地,您可以在插件选项中定义一个 drizzleObjectName,它可以接受一个 string 或 string[]。
这在您有更新方法的对象或类时很有用,而该更新方法不是来自 Drizzle。
这样的 update 方法将触发 ESLint 规则。
为了避免这种情况,您可以定义您在代码库中使用的 Drizzle 对象的名称(例如 db),
这样规则仅在更新方法来自此对象时才会触发:
示例,配置 1:
rules:
'drizzle/enforce-update-with-where': "error"class MyClass {
public update() {
return {}
}
}
const myClassObj = new MyClass();
// ---> 将被 ESLint 规则触发
myClassObj.update()
const db = drizzle(...)
// ---> 将被 ESLint 规则触发
db.update()示例,配置 2:
rules:
'drizzle/enforce-update-with-where':
- "error"
- "drizzleObjectName":
- "db"class MyClass {
public update() {
return {}
}
}
const myClassObj = new MyClass();
// ---> 不会被 ESLint 规则触发
myClassObj.update()
const db = drizzle(...)
// ---> 将被 ESLint 规则触发
db.update()