diff --git a/eslint/.eslintignore b/eslint/.eslintignore new file mode 100644 index 0000000..5f9e412 --- /dev/null +++ b/eslint/.eslintignore @@ -0,0 +1,5 @@ +**/.git +**/.svn +**/.hg +**/dist +**/node_modules \ No newline at end of file diff --git a/eslint/.eslintrc.json b/eslint/.eslintrc.json new file mode 100644 index 0000000..c010605 --- /dev/null +++ b/eslint/.eslintrc.json @@ -0,0 +1,30 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint", + "prettier" + ], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "rules": { + "@typescript-eslint/no-explicit-any": "off", + "prettier/prettier": "error", + "@typescript-eslint/no-unused-vars": "error", + // to enforce using type for object type definitions, can be type or interface + "@typescript-eslint/consistent-type-definitions": [ + "error", + "type" + ] + } +} \ No newline at end of file diff --git a/eslint/README.md b/eslint/README.md new file mode 100644 index 0000000..b0daf41 --- /dev/null +++ b/eslint/README.md @@ -0,0 +1,42 @@ +# πŸ› οΈ ESLint + +**ESLint** β€” это инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ автоматичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ JavaScript/TypeScript-ΠΊΠΎΠ΄Π°. Он ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ошибки, нСсоотвСтствия ΡΡ‚ΠΈΠ»ΡŽ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±Π°Π³ΠΈ **Π΄ΠΎ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹**. +**Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ESLint ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² связкС с prettier.** +--- + ## βš™οΈ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ + +`.eslintignore` - ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ форматирования +`.eslintrc.json` - Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ + +| ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ | ОписаниС | +| ------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `@typescript-eslint/no-explicit-any: "off"` | Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `any` (Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ явно ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ `any`) | +| `prettier/prettier: "error"` | Ошибки форматирования ΠΎΡ‚ Prettier Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ESLint-ошибки | +| `@typescript-eslint/no-unused-vars: "error"` | ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли пСрСмСнная объявлСна, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ | +| `@typescript-eslint/consistent-type-definitions: ["error", "type"]` | Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `type`, Π° Π½Π΅ `interface` для описания Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² | + +--- +## πŸ“¦ Установка зависимостСй +Установи Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹: + +```bash +npm install --save-dev \ +eslint \ +@typescript-eslint/parser \ +@typescript-eslint/eslint-plugin \ +prettier \ +eslint-plugin-prettier \ +eslint-config-prettier +``` +--- +## πŸš€ ИспользованиС +ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: +```bash +npx eslint . --ext .ts +``` +АвтоматичСски ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ: +```bash +npx eslint . --ext .ts --fix +``` + +Плагин ESLint для `VSCode`: [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) \ No newline at end of file