Próbuję użyć linera ESLint z ramą testową Jest.
Są testy przeprowadzane z niektórymi globalsami jest
, o których muszę powiedzieć liniowiec; ale trudną rzeczą jest struktura katalogów, w przypadku Jest testy są osadzone z kodem źródłowym w __tests__
folderach, więc struktura katalogów wygląda mniej więcej tak:
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
Normalnie miałbym wszystkie moje testy pod jednym katalogiem i mógłbym po prostu dodać .eslintrc
tam plik, aby dodać globały ... ale z pewnością nie chcę dodawać .eslintrc
pliku do każdego katalogu __test__
.
Na razie właśnie dodałem globalne testy do .eslintrc
pliku globalnego , ale ponieważ oznacza to, że mogę teraz odwoływać się jest
do kodu nie testującego, nie wydaje się to „właściwym” rozwiązaniem.
Czy istnieje sposób na to, aby eslint stosował reguły oparte na pewnym wzorcu opartym na nazwie katalogu lub coś w tym rodzaju?
źródło
eslint-test
plik z globusem, npeslint **/__tests__/*.js -c eslint-test.yml
. Powiedział, że nie sądzę, istnieje wiele niebezpieczeństwojest
lubbeforeEach
globalny wycieka do kodu produkcyjnego;)Odpowiedzi:
Dokumenty pokazują, że możesz teraz dodawać:
Do twojego,
.eslintrc
który doda wszystkie związane z żartem rzeczy do twojego środowiska, eliminując błędy / ostrzeżenia lintera.źródło
.eslintrc
plik, który rozszerza domyślnie.eslintrc
w swoim__tests__
folderze. Jeśli masz taki sam problem jak OP (wiele folderów testowych), możesz wygenerować je.eslintrc
za pomocą szablonu i małego skryptu bash (coś podobnegols **/__tests/ | xargs cp templates/.eslintrc
)ESLint obsługuje to od wersji> = 4:
Oto obejście (z innej odpowiedzi tutaj, głosuj w górę!) Ograniczenia „przedłużenia nadpisania” konfiguracji eslint:
Od https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
źródło
"files"
i"env"
obiekt do"overrides"
weslint.rc
I już nie trzeba się martwić o specyficznej składni przechodzącej żartem strzępienia poza plików testowych.Możesz również ustawić env testowy w pliku testowym w następujący sposób:
źródło
Aby uzupełnić odpowiedź Zachary'ego, oto obejście dla ograniczenia „przedłużenia nadpisania” konfiguracji eslint:
Od https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
źródło
Konfiguracje oparte na wzorcach są zaplanowane na wydanie 2.0.0 ESLint. Na razie jednak będziesz musiał utworzyć dwa oddzielne zadania (jak wspomniano w komentarzach). Jeden do testów, drugi do reszty kodu i uruchom oba z nich, zapewniając różne pliki .eslintrc.
PS W następnym wydaniu ESLint pojawi się środowisko żartów, które zarejestruje wszystkie niezbędne globale.
źródło
Rozwiązałem problem REF
Biegać
A następnie dodaj swój
.eslintrc
plikźródło
Dodaj środowisko tylko dla
__tests__
folderuMożesz dodać
.eslintrc.yml
plik do__tests__
folderów, który rozszerza podstawową konfigurację:Jeśli masz tylko jeden
__tests__
folder, to rozwiązanie jest najlepsze, ponieważ obejmuje środowisko tylko tam, gdzie jest potrzebne.Radzenie sobie z wieloma folderami testowymi
Jeśli masz więcej folderów testowych (przypadek OP), nadal sugeruję dodanie tych plików. A jeśli masz mnóstwo tych folderów, możesz dodać je za pomocą prostego skryptu zsh:
Ten skrypt wyszuka
__tests__
foldery i doda.eslintrc.yml
plik do konfiguracji pokazanej powyżej. Ten skrypt musi być uruchomiony w folderze zawierającym twojego rodzica.eslintrc
.źródło
niektóre odpowiedzi zakładają, że masz zainstalowaną „eslint-plugin-jest”, jednak bez potrzeby możesz to zrobić w
.eslintrc
pliku i dodać:źródło
W pliku .eslintignore dodaj następującą wartość:
To powinno zignorować wszystkie wystąpienia katalogu __tests__ i ich dzieci.
źródło