javascript - जेस्ट के साथ ESLint का उपयोग कैसे करें




jestjs (6)

केवल __tests__ फ़ोल्डर के लिए वातावरण जोड़ें

आप अपने __tests__ फ़ोल्डर में एक .eslintrc.yml फ़ाइल जोड़ सकते हैं, जो आपको मूल कॉन्फ़िगरेशन प्रदान करता है:

extends: <relative_path to .eslintrc>
env:
    jest: true

यदि आपके पास केवल एक __tests__ फ़ोल्डर है, तो यह समाधान सबसे अच्छा है क्योंकि यह जेस्ट वातावरण को केवल उसी स्थान पर गुंजाइश करता है जहां इसकी आवश्यकता होती है।

कई परीक्षण फ़ोल्डरों के साथ काम करना

यदि आपके पास अधिक परीक्षण फ़ोल्डर (OPs मामला) है, तो मैं अभी भी उन फ़ाइलों को जोड़ने का सुझाव दूंगा। और अगर आपके पास उन फ़ोल्डरों का टन है, तो उन्हें एक साधारण zsh स्क्रिप्ट के साथ जोड़ सकते हैं:

#!/usr/bin/env zsh

for folder in **/__tests__/ ;do
    count=$(($(tr -cd '/' <<< $folder | wc -c)))
    echo $folder : $count
    cat <<EOF > $folder.eslintrc.yml
extends: $(printf '../%.0s' {1..$count}).eslintrc
env:
    jest: true
EOF
done

यह स्क्रिप्ट __tests__ फ़ोल्डर के लिए दिखेगा और ऊपर दिखाए गए कॉन्फ़िगरेशन के साथ .eslintrc.yml फ़ाइल .eslintrc.yml । इस स्क्रिप्ट को आपके माता-पिता .eslintrc वाले फ़ोल्डर में लॉन्च किया .eslintrc

मैं जेस्ट टेस्टिंग फ्रेमवर्क के साथ ESLint लिंटर का उपयोग करने का प्रयास कर रहा हूं।

जेस्ट परीक्षण कुछ ग्लोबल्स जैसे जेस्ट के साथ चलता है, जिसके बारे में मुझे लिंटर को बताना होगा; लेकिन मुश्किल बात निर्देशिका संरचना है, जेस्ट के साथ परीक्षण __tests__ फ़ोल्डर में स्रोत कोड के साथ एम्बेडेड हैं, इसलिए निर्देशिका संरचना कुछ इस तरह दिखती है:

src
    foo
        foo.js
        __tests__
            fooTest.js
    bar
        bar.js
        __tests__
            barTest.js

आम तौर पर, मेरे पास एक ही dir के तहत मेरे सभी परीक्षण होंगे, और मैं .eslintrc को जोड़ने के लिए सिर्फ एक .eslintrc फ़ाइल जोड़ सकता हूं ... लेकिन मैं निश्चित रूप से हर एक __test__ एक .eslintrc फ़ाइल जोड़ना नहीं चाहता।

अभी के लिए, मैंने परीक्षण .eslintrc को वैश्विक .eslintrc फ़ाइल में .eslintrc है, लेकिन इसका मतलब है कि मैं अब गैर-परीक्षण कोड में jest को संदर्भित कर सकता हूं, जो "सही" समाधान की तरह प्रतीत नहीं होता है।

क्या निर्देशिका नाम के आधार पर कुछ पैटर्न के आधार पर नियमों को लागू करने के लिए कोई रास्ता नहीं है, या ऐसा कुछ है?


ESLint के 2.0.0 रिलीज के लिए पैटर्न आधारित कॉन्फ़िगरेशन निर्धारित हैं। हालाँकि, अब आपको दो अलग-अलग कार्य करने होंगे (जैसा कि टिप्पणियों में बताया गया है)। परीक्षण के लिए एक और बाकी कोड के लिए एक और दोनों को चलाते हैं, जबकि अलग .eslintrc फाइलें प्रदान करते हैं।

पुनश्च ESLint की अगली रिलीज में आने वाला एक जेस्ट वातावरण है, यह सभी आवश्यक ग्लोबल्स को पंजीकृत करेगा।


अपनी .eslintignore फ़ाइल में निम्न मान जोड़ें:

**/__tests__/

यह __tests__ निर्देशिका और उनके बच्चों के सभी उदाहरणों को अनदेखा करना चाहिए।


आप अपनी परीक्षा फ़ाइल में निम्नानुसार परीक्षा एनवी सेट कर सकते हैं:

/* eslint-env jest */

describe(() => {
  /* ... */
})

ज़ाचरी के उत्तर को पूरा करने के लिए, एस्लिंट कॉन्फिगरेशन की सीमा "ओवरराइड्स में विस्तार" के लिए एक समाधान है:

overrides: [
  Object.assign(
    {
      files: [ '**/*.test.js' ],
      env: { jest: true },
      plugins: [ 'jest' ],
    },
    require('eslint-plugin-jest').configs.recommended
  )
]

https://github.com/eslint/eslint/issues/8813#issuecomment-320448724


मैं समस्या का हल REF

यार्न eslint-plugin-jest जोड़ें और अपनी .eslintrc फ़ाइल को कॉन्फ़िगर करें

{
    "extends": ["airbnb","plugin:jest/recommended"],
}





eslint