ESLint Drizzle 플러그인
특정 시나리오에서 타입 검사를 수행할 수 없거나, 가능하더라도 오류 메시지를 이해하기 어려운 경우를 대비해 ESLint 패키지를 만들었습니다. 이 패키지는 개발 과정에서 중요한 시나리오를 다루는 데 도움을 주기 위해 권장 규칙을 제공합니다.
설치
npm i eslint-plugin-drizzle
npm i @typescript-eslint/eslint-plugin @typescript-eslint/parser
위 패키지들을 설치하려면 다음 명령어를 사용하세요:
npm install eslint-plugin-drizzle @typescript-eslint/eslint-plugin @typescript-eslint/parser --save-dev
이 명령어는 eslint-plugin-drizzle
와 함께 TypeScript 관련 ESLint 플러그인도 함께 설치합니다. --save-dev
옵션을 사용하면 개발 의존성으로 설치됩니다.
사용 방법
.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
Rules
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();
// ---> 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
문이 필요합니다.
선택적으로, 플러그인 옵션에서 drizzleObjectName
을 정의할 수 있습니다. 이는 string
또는 string[]
을 받습니다. 이 옵션은 Drizzle이 아닌 다른 객체나 클래스에 update
메서드가 있을 때 유용합니다. 예를 들어, Drizzle이 아닌 객체의 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: drizzleObjectName
설정
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()