ESLint 10
이 스킬은 https://eslint.org/docs/latest/에 문서화된 ESLint 10.14.0을 다룹니다. 습관과 다른 점(flat config의 함정, 놀라운 기본값, 제거된 API 및 문서가 권장하는 패턴)을 포함합니다. 참조 파일의 각 주장은 출처 페이지와 함께 제공됩니다.
탐색 방법
- 아래 빠른 규칙을 읽으십시오. 가장 빈번한 실수를 잡아냅니다.
- 마지막 표에서 작업과 일치하는 하나의 참조 파일을 엽니다.
- 코드에서
.eslintrc,env,context.getScope()또는FlatESLint를 사용하는 경우 먼저references/migration.md를 읽으십시오.
빠른 시작
npm init @eslint/config@latest
// eslint.config.js
import js from "@eslint/js";
import globals from "globals";
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([
globalIgnores(["dist/"]),
{
files: ["**/*.js", "**/*.mjs", "**/*.cjs"],
plugins: { js },
extends: ["js/recommended"],
languageOptions: { globals: { ...globals.browser } },
rules: { "no-unused-vars": "warn" },
},
]);
https://eslint.org/docs/latest/use/getting-started , https://eslint.org/docs/latest/use/configure/configuration-files
- Node.js
^20.19.0,^22.13.0또는>=24. TypeScript 타입은 TypeScript 5.3+가 필요합니다. https://eslint.org/docs/latest/use/getting-started eslint와@eslint/js를 dev 의존성으로 로컬에 설치하십시오. 전역 설치는 권장되지 않으며 플러그인은 여전히 로컬에 있어야 합니다.globals는 별도 패키지입니다. https://eslint.org/docs/latest/use/getting-started , https://eslint.org/docs/latest/use/configure/migration-guideeslint.config.ts는 Node에서 dev 의존성jiti>= 2.2.0이 필요합니다. https://eslint.org/docs/latest/use/configure/configuration-files
빠른 규칙
설정 파일
- ESLint는 설정을 확장하거나 규칙을 활성화할 때까지 유용하게 검사하지 않습니다. https://eslint.org/docs/latest/use/getting-started
- 설정 조회는 각 검사 파일의 디렉토리에서 시작하여 위로 올라갑니다.
--config는 하나의 파일을 강제합니다. https://eslint.org/docs/latest/use/configure/configuration-files , https://eslint.org/docs/latest/use/migrate-to-10.0.0 files가 없는 객체는 다른 객체가 일치하는 모든 파일에 적용됩니다..ts,.md또는.json을 검사하는 경우files로 JS 규칙을 범위를 지정하고, 항상files를extends옆에 두십시오. https://eslint.org/docs/latest/use/configure/configuration-files- 객체에서 단독으로 사용된
ignores(전역 ignores)는 디렉토리와 일치할 수 있습니다. 다른 키 옆에서는 파일만 일치합니다:"dir/**","dir/"는 안 됩니다.globalIgnores()를 선호하십시오. https://eslint.org/docs/latest/use/configure/configuration-files - 점 파일은 무시되지 않는 한 검사됩니다.
**/node_modules/와.git/만 기본적으로 무시됩니다. https://eslint.org/docs/latest/use/configure/ignore , https://eslint.org/docs/latest/use/configure/configuration-files eslint/config에서includeIgnoreFile(path, { gitignoreResolution: true })로.gitignore를 가져오십시오. https://eslint.org/docs/latest/use/configure/ignore- 환경 없음:
languageOptions.globals에서globals패키지로 전역 변수를 선언하십시오. https://eslint.org/docs/latest/use/configure/language-options - 플러그인, 파서 및 프로세서는 가져온 객체입니다. 프로세서는 자동으로 적용되지 않습니다. https://eslint.org/docs/latest/use/configure/migration-guide
npx eslint --inspect-config또는--print-config file.js로 파일과 일치하는 항목을 검사하십시오. https://eslint.org/docs/latest/use/configure/debug
규칙 및 주석
- 심각도만 재정의하는 경우 이전 옵션을 유지합니다. 설정 및
/* eslint */주석에서 모두 해당합니다. https://eslint.org/docs/latest/use/configure/rules , https://eslint.org/docs/latest/use/migrate-to-9.0.0 - 인라인 주석은 플러그인을 로드할 수 없습니다. 단순한
/* eslint-enable */은 모든 규칙을 다시 활성화합니다. https://eslint.org/docs/latest/use/configure/rules - 이유를
--뒤에 넣으십시오:// eslint-disable-next-line no-console -- 이유. https://eslint.org/docs/latest/use/configure/rules /* eslint-env */는 ESLint 10에서 오류입니다./* global name */또는 설정 전역 변수를 사용하십시오. https://eslint.org/docs/latest/use/migrate-to-10.0.0no-unused-vars는 기본적으로 사용되지 않은catch (e)를 보고합니다:catch {라고 작성하십시오. https://eslint.org/docs/latest/rules/no-unused-varsno-return-await를 활성화하지 마십시오. 코어 레이아웃 규칙 대신 포매터 또는 ESLint Stylistic을 사용하십시오. https://eslint.org/docs/latest/rules/no-return-await , https://eslint.org/docs/latest/use/core-concepts/glossary
CLI 및 CI
- 종료 코드 1은 오류(또는 너무 많은 경고)를 의미하고, 2는 설정 또는 내부 오류를 의미합니다. https://eslint.org/docs/latest/use/command-line-interface
--quiet는"warn"규칙을 실행하지 않지만,--max-warnings도 설정된 경우 실행은 되지만 보고되지 않습니다. https://eslint.org/docs/latest/use/command-line-interface- 글로브를 따옴표로 묶으십시오.
--fix는 stdin에서 오류를 발생시킵니다:--fix-dry-run --format json을 사용하십시오. https://eslint.org/docs/latest/use/command-line-interface --cache는 파일 간 종속성을 무시합니다: 타입 인식 및 import 규칙이 오래될 수 있습니다. https://eslint.org/docs/latest/use/command-line-interfaceeslint --fix --suppress-all을 사용하여 이전 코드에 엄격한 규칙을 채택하고eslint-suppressions.json을 커밋하십시오. https://eslint.org/docs/latest/use/suppressions
사용자 정의 규칙 및 통합
- 규칙은
{ meta, create }입니다.meta.fixable과meta.hasSuggestions는 수정 또는 제안에 필요하고,meta.schema는 옵션 수락에 필요합니다. https://eslint.org/docs/latest/extend/custom-rules context.sourceCode,context.filename및sourceCode.getScope(node)를 사용하십시오.context.getX()메서드는 사라졌습니다. https://eslint.org/docs/latest/use/migrate-to-10.0.0 , https://eslint.org/docs/latest/use/migrate-to-9.0.0new ESLint({ fix: true })는ESLint.outputFixes(results)까지 아무것도 쓰지 않습니다. https://eslint.org/docs/latest/integrate/nodejs-api- 플러그인에
meta.name,meta.version및meta.namespace를 제공하여 더 쉬운 디버깅과 더 효과적인 캐싱을 가능하게 하십시오. 네임스페이스는defineConfig()가 다른 이름으로 플러그인을 찾을 수 있게 합니다. https://eslint.org/docs/latest/extend/plugins
이전 패턴
| 이전 | 현재 |
|---|---|
.eslintrc.*, package.json의 eslintConfig | defineConfig()를 사용한 eslint.config.js |
"extends": "eslint:recommended" | plugins: { js }와 함께 extends: ["js/recommended"] |
env, /* eslint-env */ | languageOptions.globals, /* global */ |
.eslintignore, --ignore-path | globalIgnores(), includeIgnoreFile() |
overrides | files를 사용한 더 많은 설정 객체 |
--rulesdir, linter.defineRule() | 인라인 플러그인 plugins: { local: { rules } } |
--no-eslintrc | --no-config-lookup |
context.getScope(), context.getSourceCode() | sourceCode.getScope(node), context.sourceCode |
| 함수 스타일 규칙 | { meta, create } |
FlatESLint, LegacyESLint, FlatRuleTester | ESLint, RuleTester |
require-jsdoc, valid-jsdoc | eslint-plugin-jsdoc |
자세한 내용과 전체 목록: references/migration.md.
참조 파일
| 파일 | 읽을 대상 |
|---|---|
| references/configuration.md | 설정 파일 이름 및 조회, TypeScript 설정, 설정 객체 키, files 일치, extends, 언어 옵션, 전역 변수, 파서, 프로세서, 언어, 디버깅 |
| references/ignoring-files.md | 전역 및 비전역 ignores, 기본 ignores, 점 파일, 무시 해제 레시피, .gitignore 가져오기 |
| references/rules-and-inline-config.md | 심각도, 옵션 병합, 인라인 설정 주석, 비활성화 지시문, linterOptions, 수정 vs 제안, 순환 수정 |
| references/cli.md | 글로브, --fix, 종료 코드, --quiet, 포매터, 캐시, 일괄 억제, 기능 플래그, 동시성, MCP 서버 |
| references/migration.md | ESLint 9 및 10의 주요 변경 사항, codemod, eslintrc에서 flat config로, 변경된 규칙 옵션, 손상된 플러그인 |
| references/custom-rules.md | 규칙 meta, 로컬 규칙, context.report, 수정, 제안, meta.schema, meta.defaultOptions, 폐지, 제거된 context 메서드 |
| references/ast-scope-code-paths.md | 선택자, SourceCode 메서드, 스코프, 스코프 관리자 객체, 코드 경로 이벤트, 프로파일링 |
| references/testing-rules.md | RuleTester 기본값, 유효 및 무효 사례, 수정 및 제안 단언, 엄격한 검사, 프레임워크 훅 |
| references/plugins-and-shareable-configs.md | 플러그인 객체 및 meta, 플러그인 설정, 게시, 공유 가능한 설정, 사용자 정의 파서, 프로세서, 언어, 포매터 |
| references/nodejs-api.md | ESLint 옵션 및 메서드, lintText, outputFixes, loadFormatter, LintResult, Linter, SourceCode |
| references/core-rules-problems.md | TypeScript가 다루는 규칙, 사용되지 않고 선언되지 않은 변수, 섀도잉, 조건, 비동기 오류, 정규식 함정 |
| references/core-rules-restrictions.md | no-restricted-imports, -globals, -properties, -exports, no-restricted-syntax 레시피, 기타 금지, 크기 및 복잡성 제한 |
| references/core-rules-style.md | 제안 규칙 기본값, 레이아웃 규칙 기본값, 제거된 규칙, 폐지된 옵션 |
크롤링된 페이지: SOURCES.md.