ESLint Drizzle Plugin
ESLint Drizzle Plugin
특정 시나리오에서 타입 체크를 수행하는 것이 불가능하거나, 가능하더라도 에러 메시지를 이해하기 어려운 경우를 위해 권장 규칙이 포함된 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 설정
이 플러그인은 모든 규칙(지원 중단된 규칙 제외)을 사용하는 all 설정을 제공합니다.
root: true
extends:
- "plugin:drizzle/all"
parser: '@typescript-eslint/parser'
parserOptions:
project: './tsconfig.json'
plugins:
- drizzleRecommended 설정
현재 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 문이 필요합니다.
선택적으로 플러그인 옵션에서 string 또는 string[]을 받는 drizzleObjectName을 정의할 수 있습니다.
이는 Drizzle이 아닌 다른 객체나 클래스가 delete 메서드를 가지고 있을 때 유용합니다.
그러한 delete 메서드는 ESLint 규칙을 트리거합니다. 이를 방지하려면 코드베이스에서 사용하는
Drizzle 객체의 이름(예: db)을 정의하여, 해당 객체에서 오는 delete 메서드에서만 규칙이 트리거되도록 할 수 있습니다:
예제, 설정 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() 문에서 .where() 절과 함께 update를 사용하도록 강제합니다.
대부분의 경우, 테이블의 모든 행을 업데이트할 필요가 없으며 어떤 형태의 WHERE 문이 필요합니다.
선택적으로 플러그인 옵션에서 string 또는 string[]을 받는 drizzleObjectName을 정의할 수 있습니다.
이는 Drizzle이 아닌 다른 객체나 클래스가 update 메서드를 가지고 있을 때 유용합니다.
그러한 update 메서드는 ESLint 규칙을 트리거합니다. 이를 방지하려면 코드베이스에서 사용하는
Drizzle 객체의 이름(예: db)을 정의하여, 해당 객체에서 오는 update 메서드에서만 규칙이 트리거되도록 할 수 있습니다:
예제, 설정 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()