[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -1,98 +1,133 @@
|
||||
---
|
||||
id: wiki-2026-0508-eslint-plugin-prettier
|
||||
title: eslint plugin prettier
|
||||
title: eslint-plugin-prettier
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: [P-Reinforce-AUTO-4555A7]
|
||||
aliases: [eslint plugin prettier, prettier-plugin]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
tags: [auto-reinforced]
|
||||
verification_status: applied
|
||||
tags: [eslint, prettier, formatting, lint, devops]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-04-20
|
||||
github_commit: "[P-Reinforce] Continuous Worker - [[ESLint|ESLint]]-plugin-[[Prettier|Prettier]]"
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
tech_stack:
|
||||
language: unspecified
|
||||
framework: unspecified
|
||||
language: javascript
|
||||
framework: eslint
|
||||
---
|
||||
|
||||
# [[eslint-plugin-prettier|eslint-plugin-prettier]]
|
||||
# eslint-plugin-prettier
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> `eslint-plugin-prettier`는 코드 포맷터인 Prettier를 정적 분석 도구인 ESLint의 규칙으로 실행시켜주는 플러그인 패키지입니다 [1, 2]. 이 도구를 사용하면 Prettier가 인식하는 코드 스타일 및 포맷 오류를 ESLint의 에러나 경고로 출력하게 됩니다 [2, 3]. 결과적으로 개발자는 두 도구의 기능을 통합하여 코드 문법과 포맷팅을 한 번에 관리할 수 있습니다 [4, 5].
|
||||
## 매 한 줄
|
||||
> **"매 Prettier 의 formatting 결과를 ESLint rule 로 노출"**. 매 Prettier 가 보는 차이를 lint error 로 reporting — 매 같은 IDE/CI 에서 lint 와 format 을 한 흐름으로. 2026 현재는 `eslint --fix` integration 보다 **flat config + Prettier 3 + format-only on save** 가 권장.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **주요 역할 및 동작 방식:**
|
||||
`eslint-plugin-prettier`는 Prettier의 포맷팅 규칙을 ESLint의 린팅 규칙 안으로 가져와 동작하게 만듭니다 [4-6]. 이를 통해 개발자는 코드 내에서 Prettier의 규칙에 어긋나는 요소들을 ESLint의 에러(빨간 줄)나 경고(노란 줄)로 확인할 수 있습니다 [3, 4]. 또한 `eslint --fix` 명령어 하나만 실행해도 `prettier --write`를 별도로 사용할 필요 없이 코드 포맷팅까지 자동으로 적용되게 해줍니다 [4, 5].
|
||||
## 매 핵심
|
||||
|
||||
* **사용의 장단점:**
|
||||
* **장점:** Prettier를 따로 설치하거나 실행할 필요 없이, `.eslintrc`와 같은 하나의 설정 파일에서 ESLint와 Prettier 설정을 통합하여 관리할 수 있습니다 [4].
|
||||
* **단점:** 포맷팅 오류가 ESLint 에러로 간주되기 때문에 에디터 상에서 붉은 밑줄이 너무 많이 생겨 시각적으로 거슬릴 수 있습니다 [4, 6]. 또한, Prettier를 단독으로 사용하는 것보다 실행 속도가 느려질 수 있으며, 불필요한 플러그인 레이어가 하나 더 추가된다는 단점이 존재합니다 [4, 6].
|
||||
### 매 동작 원리
|
||||
- `eslint-plugin-prettier` 는 **Prettier 를 ESLint rule 처럼 실행** — file 의 expected output 과 actual content 를 비교해 diff 를 lint error 로 보고.
|
||||
- Rule key: `prettier/prettier` — `--fix` 시 Prettier 가 직접 rewrite.
|
||||
- 항상 `eslint-config-prettier` 와 함께 사용 (ESLint 의 stylistic rules off).
|
||||
|
||||
* **보안 취약점 (CVE-2025-54313):**
|
||||
2025년 7월 발생한 npm 공급망 공격의 영향을 받은 패키지 중 하나입니다 [7]. 피싱 이메일 공격으로 메인테이너의 토큰이 탈취되어 윈도우 환경을 타깃으로 하는 악성 코드가 삽입된 버전이 npm 레지스트리에 배포되었으며, 해당 플러그인의 4.2.2 및 4.2.3 버전이 이 공격에 영향을 받은 것으로 보고되었습니다 [7].
|
||||
### 매 2026 권장 stack
|
||||
- **Format**: Prettier 3.x — IDE save 또는 git pre-commit hook 에서 직접 실행.
|
||||
- **Lint**: ESLint 9 flat config — 매 logic / type-aware rules.
|
||||
- **결합**: `eslint-config-prettier` 만 적용 (rule conflict off). `eslint-plugin-prettier` 는 **선택** — CI 에서만 사용 권장.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
||||
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
|
||||
### 매 응용
|
||||
1. Monorepo CI 에서 `eslint --max-warnings=0` 으로 format drift 감지.
|
||||
2. Pre-commit `lint-staged` 와 결합해 staged file 만 빠르게 검사.
|
||||
3. Editor 가 Prettier 미설치인 contributor 의 PR 에서 catch.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[ESLint|ESLint]], Prettier, [[eslint-config-prettier|eslint-config-prettier]]
|
||||
- **Projects/Contexts:** CVE-2025-54313 (공급망 공격), 웹 프론트엔드 개발 환경 설정
|
||||
- **Contradictions/Notes:** Prettier 공식 문서 및 여러 개발자들은 `eslint-plugin-prettier`를 사용할 때 발생하는 속도 저하와 과도한 에러 표시 문제 때문에 이 방법보다는 포맷팅 충돌 규칙만 꺼주는 `[[eslint-config-prettier|eslint-config-prettier]]`의 단독 사용을 가장 추천하고 있습니다 [1, 6, 8]. 그러나 설정의 중앙화와 단일 수정 명령어(`eslint --fix`)의 편리함을 이유로 이를 선호하는 실무자들도 존재합니다 [4].
|
||||
## 💻 패턴
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-19*
|
||||
### Flat config (ESLint 9 + Prettier 3, 2026 표준)
|
||||
```js
|
||||
// eslint.config.js
|
||||
import prettierPlugin from 'eslint-plugin-prettier';
|
||||
import prettierConfig from 'eslint-config-prettier';
|
||||
import js from '@eslint/js';
|
||||
|
||||
---
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
|
||||
## 💻 코드 패턴 (Code Patterns)
|
||||
|
||||
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
|
||||
|
||||
```text
|
||||
# TODO
|
||||
export default [
|
||||
js.configs.recommended,
|
||||
prettierConfig, // turns off conflicting rules
|
||||
{
|
||||
plugins: { prettier: prettierPlugin },
|
||||
rules: {
|
||||
'prettier/prettier': ['error', { singleQuote: true, semi: true }],
|
||||
},
|
||||
},
|
||||
];
|
||||
```
|
||||
|
||||
## 🤔 의사결정 기준 (Decision Criteria)
|
||||
### Recommended preset
|
||||
```js
|
||||
import prettierRecommended from 'eslint-plugin-prettier/recommended';
|
||||
|
||||
**선택 A를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
export default [
|
||||
prettierRecommended, // includes plugin + config + rule
|
||||
];
|
||||
```
|
||||
|
||||
**선택 B를 써야 할 때:**
|
||||
- *(TODO)*
|
||||
### Pre-commit (lint-staged + husky)
|
||||
```json
|
||||
// package.json
|
||||
{
|
||||
"lint-staged": {
|
||||
"*.{js,ts,tsx}": ["eslint --fix", "prettier --write"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**기본값:**
|
||||
> *(TODO)*
|
||||
### CI gate
|
||||
```yaml
|
||||
# .github/workflows/lint.yml
|
||||
- run: pnpm prettier --check .
|
||||
- run: pnpm eslint .
|
||||
```
|
||||
|
||||
## ❌ 안티패턴 (Anti-Patterns)
|
||||
### Programmatic check
|
||||
```js
|
||||
import { ESLint } from 'eslint';
|
||||
|
||||
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
|
||||
const eslint = new ESLint({ fix: false });
|
||||
const results = await eslint.lintFiles(['src/**/*.ts']);
|
||||
const formatter = await eslint.loadFormatter('stylish');
|
||||
console.log(formatter.format(results));
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| 매 contributor 가 Prettier 셋업 보장 안 됨 | `eslint-plugin-prettier` 도입 → CI gate |
|
||||
| 매 모두 IDE save-on-format + pre-commit | plugin 없이 `prettier --check` 만 |
|
||||
| Monorepo + 다양한 language | Prettier CLI 직접 + plugin 생략 (속도 ↑) |
|
||||
| Editor lint = error 표시가 필요 | plugin 활성 |
|
||||
|
||||
**기본값**: **`eslint-config-prettier` 만 사용 + Prettier 는 별도 실행**. plugin 은 형식 drift 감지용 CI 에서 한정 적용.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[ESLint]] · [[Prettier]]
|
||||
- 변형: [[eslint-config-prettier]] · [[Stylelint]]
|
||||
- 응용: [[lint-staged]] · [[husky]] · [[CI_CD Pipeline]]
|
||||
- Adjacent: [[Code-Quality]] · [[DevSecOps_Framework]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: 매 Prettier output 과 lint output 을 한 reporter 로 통합해야 할 때 — 특히 monorepo CI 에서.
|
||||
**언제 X**: 매 small repo 이고 contributor 가 Prettier IDE plugin 사용. plugin 의 overhead (Prettier 를 매 lint 에서 invoke) 가 불필요.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **Stylistic ESLint rule 과 plugin 동시 사용**: `eslint-config-prettier` 미적용 → 무한 충돌.
|
||||
- **`--fix` 의존 only**: editor 가 fix 안 해주면 broken state 유지. Prettier 직접 실행이 빠르고 명확.
|
||||
- **Plugin 으로 모든 file 검사**: 매 large repo 에서 ESLint+Prettier 동시 invoke 는 느림. `lint-staged` 로 scope.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (eslint-plugin-prettier README v5.x, Prettier 3 docs, ESLint 9 flat config docs).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — full content with flat config + 2026 권장 stack |
|
||||
|
||||
Reference in New Issue
Block a user