ESLint Drizzle 插件
对于无法进行特定场景的类型检查,或者可以进行但错误消息难以理解的情况,我们决定创建一个包含推荐规则的 ESLint 包。此包旨在帮助开发人员在开发过程中处理关键场景。
安装
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()
语句中使用带 .where()
子句的 delete
。大多数情况下,您不需要删除表中的所有行,而是需要某种 WHERE
语句。
或者,您可以在插件选项中定义一个 drizzleObjectName
,它接受一个 string
或 string[]
类型。当您有不属于 Drizzle 的对象或类具有 `delete` 方法时,这会很有用。此类 `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()
语句中使用带 .where()
子句的 update
。大多数情况下,您不需要更新表中的所有行,而是需要某种 WHERE
语句。
或者,您可以在插件选项中定义一个 drizzleObjectName
,它接受一个 string
或 string[]
类型。当您有不属于 Drizzle 的对象或类具有 `delete` 方法时,这会很有用。此类 `update` 方法会触发 ESLint 规则。为避免这种情况,您可以定义在代码库中使用的 Drizzle 对象名称(例如 `db`),这样只有当 `update` 方法来自该对象时,规则才会触发。
示例,配置 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()