ESLint v7.4.0 z nowymi funkcjami wydane
Na oficjalnym blogu ESLint ogłoszono wydanie nowej wersji z numerem v7.4.0. Jest to niewielkie uaktualnienie wcześniejszej wersji. W 7.4 znajdziemy kilka dodanych, nowych funkcji oraz poprawę występujących błędów.
Najważniejsze zmiany w ESLint v7.4.0
Pierwszy problem, z jakim musieli się zmierzyć twórcy aktualizacji, był zgłaszany przez użytkowników. Występujący problem łamał eslint-config-airbnb, ponieważ korzystał z konfiguracji reguł Infinity. Co prawda, Infinity powinno być zabronione, jednak błąd w walidatorze schematu JSON, niepoprawnie pozwalało na Infinity, gdy określano integer.
W wersji 7.3 dostępna była zmiana, która naprawiła problem wywoływany przez serializację konfiguracji reguł. Wtedy też wychwycono opisany wcześniej błąd Infinity. Głównym celem ESLint jest konfiguracja reguł tak, aby były serializowane w JSON. Ma to na celu zapewnienie spójności między wszystkimi formatami JSON, YAML oraz JS .eslintrc. ESLint opiera się także na tej właściwości w opcjach –cache oraz –print-config w wierszach poleceń.
Idealnym rozwiązaniem problemu Infinity byłyby użycie Number.MAX_SAFE_INTEGER, zamiast Infinity. Jednak sama aktualizacja eslint-config-airbnb, aby tego użyć, mogłaby trwać zbyt długo. Dlatego też w nowej wersji ESLint v7.4.0 wdrożono wyjątek, który zastąpił Infinity.
Po pierwszych poprawkach wcześniejszej wersji zgłoszono także problem z regułą, która nakazywała korzystanie z instancji wyrażeń regularnych. Jednak nie mogą być one serializowane w JSON. Mowa o eslint-plugin-unicorn. W przeciwieństwie do wcześniejszego problemu, w tym przypadku nie można było odizolować wartości do pojedynczej zależności. Dzieje się tak, ponieważ konfiguracje użytkownika końcowego dla eslint-plugin-unicorn posiadają wyrażenia regularne. Ustalenie wszystkich z nich nie jest praktyczne.
Jako rozwiązanie częściowe twórcy wycofali pierwotną zmianę. Dzięki temu odblokuje się regularne linkowanie dla użytkowników, których konfiguracje reguł zawierają wartości nieserializowane przez JSON. W tym przypadku jednak opcje –cache i –print-config mogą mieć niezdefiniowane zachowanie.
W przyszłej głównej wersji ESLint planuje się, aby konfiguracje reguł posiadały tylko wartości możliwe do serializacji JSON. Twórcy oczekują, że pomogą w tym ulepszenia RuleTester.
Inne ulepszenia
Wśród innych, mniejszych ulepszeń jest także dodana opcja „ignoreGlobals” do reguły camelcase. Zgodnie z ostatnią polityką i ruchem #blm, zmieniono nazwę id-blacklist na id-denylist.