๐ ESLint
ESLint โ Kod sifatini tekshiruvchi vosita
๐ Muammo:
- Kodda koโplab
anti-pattern,unused variables,undefinedoโzgaruvchilar boโlishi mumkin - Bu xatolar runtimeโda chiqadi
๐ Nima bu?
- ESLint โ bu statik tahlil vositasi, JavaScript/TypeScript kodni yozilish paytida tekshiradi
rules,pluginsvaextendsorqali sozlanadi
โ Hal qiladigan muammo:
- Kod sifati oshadi
- Yozilishdagi xatolar erta aniqlanadi
- Yagona kod standarti shakllanadi
ESLint yordamida quyidagilar oldini olasiz:
varoโrnigalet/constishlatmaslik,- kerakmas
console.log, - notoโgโri nomlash,
- importdan foydalanilmaslik,
- ishlatilmagan oโzgaruvchilar va h.k.
๐ ๏ธ Qanday ishlatiladi:
npm install --save-dev eslint
npx eslint --init
Bu sizdan bir nechta savollar soโraydi:
Qaysi texnologiyani ishlatyapsiz? (React, Vue, TypeScript, Node va h.k.)
Kod qayerda ishlaydi? (Browser, Node.js)
Kod yozish uslubini belgilaysiz (Airbnb, Standard, Prettier integratsiyasi)
JSON yoki YAML konfiguratsiya tanlaysiz.
eslint.config.mjsdefault:
import js from '@eslint/js'
import globals from 'globals'
import tseslint from 'typescript-eslint'
import { defineConfig } from 'eslint/config'
export default defineConfig([
{
files: ['**/*.{js,mjs,cjs,ts,mts,cts}'],
plugins: { js },
extends: ['js/recommended'],
},
{
files: ['**/*.{js,mjs,cjs,ts,mts,cts}'],
languageOptions: { globals: globals.browser },
},
tseslint.configs.recommended,
])
- eslint.config.mjs misol:
import js from '@eslint/js';
import globals from 'globals';
import tseslint from 'typescript-eslint';
import { defineConfig } from 'eslint/config';
import tsParser from '@typescript-eslint/parser';
export default defineConfig([
{
files: ['**/*.{js,mjs,cjs,ts,mts,cts}'],
languageOptions: {
parser: tsParser,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
globals: globals.browser,
},
plugins: {
'@typescript-eslint': tseslint,
},
rules: {
...js.configs.recommended.rules,
...tseslint.configs.recommended.rules,
'no-unused-vars': 'warn',
'no-console': ['error', { allow: ['warn', 'error'] }],
semi: ['error', 'always'],
quotes: ['error', 'single'],
},
},
]);
- Amalda:
npx eslint . --fix
๐ฏ Muhim jihatlar:
- Har bir jamoa uchun custom rules tuzish mumkin
- Plugin ekotizimi juda kuchli
- Prettier bilan integratsiya qilish:
eslint-config-prettier,eslint-plugin-prettier
๐ข Yutuqlari:
- Katta jamoalarda sifatni boshqarish oson
- Har xil muhitlarda (browser, node) sozlash mumkin
CI/CDda ishlatilishi mumkin
๐ด Kamchiliklari:
- Toโgโri konfiguratsiya qilish uchun vaqt kerak
- Har doim avtomatik tuzatib boโlmaydi
