reactjs - Eslint გამოავლინოს მაგრამ გამოტოვოს .tsx ფაილები
მინდა დავიწყო eslint-ის გამოყენება ჩემს .tsx ფაილებზე.
ჩემი კონფიგურაცია ასე გამოიყურება:
module.exports = {
'env': {
'browser': true,
'es2021': true
},
'settings': {
'react': {
'version': 'detect'
}
},
'extends': [
'eslint:recommended',
'plugin:react/recommended',
'plugin:@typescript-eslint/recommended'
],
'parser': '@typescript-eslint/parser',
'parserOptions': {
'ecmaFeatures': {
'jsx': true
},
'ecmaVersion': 12,
'sourceType': 'module'
},
'plugins': [
'react',
'@typescript-eslint'
],
'rules': {
'indent': [
'error',
'tab'
],
'linebreak-style': [
'error',
'unix'
],
'quotes': [
'error',
'single'
],
'semi': [
'error',
'never'
]
}
}
თუ მაქვს ფაილი გაფართოებით .ts და შევასრულებ ამ ბრძანებას:
yarn eslint ./src/components/Frame.ts
... მე შემიძლია მივიღო ლინტინგის შეცდომების სია.
თუ მე გავცვლი გაფართოებას .tsx-ზე და ჩავატარებ ეს ბრძანება მასზე:
yarn eslint ./src/components/Frame.tsx
... მე არ მაქვს სრულიად nenhuma შეტყობინება. არც შეცდომა, არც გაფრთხილება, არაფერი. თითქოს ფაილი ნორმალურია.
ჩემს VSCode-ში მაქვს ESLint გაფართოება. ის მუშაობს. ის პრობლემებს უსვამს ხაზს. როგორც ვიცი, ეს გაფართოება იყენებს ერთსა და იმავე .eslintrc ფაილს, ამიტომ კონფიგურაცია უნდა იყოს კარგი.
შეგიძლია მომცე რამე ახსნა, რატომ მუშაობს კონფიგურაცია გაფართოებით და რატომ არ მუშაობს ტერმინალში?
პასუხი #1
პრობლემა არის ის, თუ როგორ აწარმოებ es-lint. ამჟამად @typescript-eslint სტანდარტულად არ იკვლევს .tsx ფაილებს, საჭიროა მიუთითოთ ექსტენშენები, რომლებიც უნდა გაკონტროლდეს, მაგალითად
yarn eslint --ext=ts,tsx src
ეს ბრძანება მოძებნის ყველა ფაილს, რომელიც მთავრდება .ts ან .tsx src ფოლდერში და @typescript-eslint იმუშავებს როგორც მოსალოდნელი .ts ან .tsx ფაილებთან
yarn eslint src/**/*.ts src/**/*.tsx
ეს ბრძანება მოძებნის ყველა ფაილს, რომელიც მთავრდება .ts ან .tsx src ფოლდერში, მაგრამ @typescript-eslint იმუშავებს მხოლოდ .ts ფაილებზე და უპირფერებლად დატოვებს .tsx ფაილებს
yarn eslint ./src/components/Frame.tsx
ამ ბრძანებას, რომლის გაშვებას ცდილობდით, იგივე შედეგი ექნება, რაც მეორე ბრძანებას yarn eslint src/**/*.ts src/**/*.tsx, მაგრამ ის მოძებნის ./src/components/Frame.tsx
