deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Geliştirici, upstream beklerken ESLint 10 için React 19 linting devamını yayınladı

Bir dev.to yazarı, upstream eklentisi ESLint 10 üzerinde çöktükten sonra eslint-plugin-react'i forklayıp @ternaus/eslint-plugin-react'i oluşturdu ve 102 kuralı 11 React 19'a özgü kontrole indirdi.

Geliştirici, upstream beklerken ESLint 10 için React 19 linting devamını yayınladı

Bir geliştirici, ESLint 10 çalıştıran React 19 projeleri için hazırlanmış, eslint-plugin-react'in bağımsız bir devamı olan @ternaus/eslint-plugin-react paketini yayınladı. Yazarın dev.to'daki gönderisine göre bu sürüm, hâlâ yalnızca ESLint 9'a kadar destek bildiren upstream eklentinin bıraktığı boşluğu dolduruyor.

Ne bozuldu

ESLint 10, kullanımdan kaldırılmış rule-context API'lerini kaldırdı ve mevcut eslint-plugin-react sürümü olan 7.37.5, yeni ana sürüm altında contextOrFilename.getFilename is not a function şeklinde bir TypeError ile çökebiliyor. Yazar, upstream tarafında 7 Şubat 2026'da açılan uyumluluk sorununun 23 Ağustos itibarıyla, yani altı aydan uzun süre sonra hâlâ açık olduğunu; 30 Temmuz'da açılan bir pull request'in de beklediğini yazıyor.

Yazar beklemek yerine upstream depoyu forklamış, Git geçmişini, MIT lisansını ve atıfları korumuş ve projeyi artık bağımsız olarak sürdürüyor.

Bilinçli olarak dar bir sözleşme

Yeni paket React 19 ve üzerini, ESLint 10, Biome 2.5.8 veya sonrasını ve Node.js 22.13, 24 ya da 26'yı destekliyor ve yalnızca flat config ile çalışıyor. React 18, ESLint 9 ve .eslintrc dosyaları açıkça sözleşmenin dışında.

Tasarım, yazarın üretimdeki Next.js 16 ve React 19 kod tabanlarında kullandığı iki araçlı kurulumu varsayıyor: Biome, genel JavaScript, TypeScript ve JSX için birincil formatter ve linter olarak hizmet ederken, ESLint yalnızca Biome'nin sağlamadığı kalan React'a özgü kontroller için ayrılıyor. Eklentinin kendisi native ESM kullanıyor ve tanıdık react/* kural ad alanını koruyor.

102 kuraldan 11'e

Fork noktasında upstream eklenti 104 kural modülü ihraç ediyordu ve all preset'i 102 etkin kuralı açıyordu. Yazar her kuralı yeniden inceledi ve yalnızca React 19 doğruluğunu zorunlu kılanları ya da gerçekten yararlı, React'a özgü performans uyarılarını tuttu.

jsx-key, no-danger, no-unknown-property ve self-closing-comp dahil olmak üzere tam 20 kural, Biome zaten aynı tanılamayı ürettiği için çıkarıldı. jsx-sort-props ve function-component-definition gibi stil ve ekip politikası kuralları, ayrıca yazarın yerel bir AST'den proje geneli sorularına yanıt veremeyeceğini düşündüğü no-unused-prop-types ve no-unused-state gibi sezgisel kurallar kaldırıldı.

Orijinal kural kimliklerinden yalnızca dördü ayakta kaldı: jsx-no-constructed-context-values, no-deprecated, no-direct-mutation-state ve no-invalid-html-attribute. Bunların çevresine yazar yedi kural daha ekledi ya da daralttı; bunlar arasında React 19'un yok saydığı bir API'yi yakalayan no-function-default-props, önlenebilir render zamanı işi hakkında uyaran prefer-use-state-lazy-initialization ve jsx-no-key-after-spread yer alıyor. undefined render eden bileşenleri yasaklayan önerilen bir kural ise uygulanıp ardından silindi; çünkü React 19 tanımsız dönüşe izin veriyor ve bunu yasaklamak, çerçeve gereksinimi kılığına sokulmuş bir ekip kuralı olurdu.

Sürüm 8.0.0, tamamı recommended preset'inde olan 11 kural taşıyor: dokuz doğruluk kuralı hata, iki performans kuralı uyarı bildiriyor. Ayrı bir all preset'i yok; çünkü bu ya recommended'ı yineler ya da yalnızca önem derecesinden farklı olurdu.

Yalnızca gerçek projelerin bulduğu hatalar

Birim testleri ve paket kontrolleri üçüncü release candidate'ye kadar yeşile dönmüştü; ancak eklentiyi iki gerçek uygulamaya kurmak, asıl önemli sorunları ortaya çıkardı.

no-invalid-html-attribute kuralı başlangıçta select, option ve textarea gibi elemanlardaki alt, accept, name, loading, form ve value gibi geçerli nitelikleri reddediyordu. Düzeltmeler üç turda geldi ve tek bir meta veri kaynağına tüm sözleşme muamelesi yapmak yerine, WHATWG HTML content attribute'leri React DOM özelliklerinden ayrıştırılarak sona erdi.

İkinci hata Next.js ile ilgiliydi. Yazara göre eslint-config-next@16 flat config oluşturuyor ama kuralları hâlâ eski biçimli bir react.configs.recommended.rules alanından okuyor; dolayısıyla yalnızca react.configs.flat.recommended sunan bir paket, ESLint bir dosyayı lint'lemeden önce yapılandırma sırasında başarısız oluyordu. Sonraki bir sürüm okuma uyumlu alanı ekledi ve yazar, Next.js eklentiyi kapsamsız eslint-plugin-react adıyla içe aktardığı için gereken bir Yarn resolution'ı belgeledi.

Sürüm süreci artık paketlenmiş npm arşivini publint ile kontrol ediyor, onu ESM, CommonJS ve TypeScript tüketicilerinden yükleyip desteklenen Next.js yapılandırma biçimini deniyor ve desteklenen üç Node.js hattının tamamında CI çalıştırıyor.

Neden önemli

Yazar tüm bu çabayı agent destekli geliştirmenin bir sonucu olarak çerçeveliyor: kodlama agent'lerine ne kadar özerklik verilirse, bir deponun beklentilerinin o kadar fazlası, bir agent'ın üzerinde hareket edebileceği geçti ya da kaldı sonuçları olarak çalıştırılabilir olmalı; başarısızlıklar ilk kez manuel incelemede keşfedilmemeli. Linting, pre-commit hook'ları, testler ve küçük incelenebilir commit'lerin yanında bu koruma bariyerlerinden biri.

Şimdi ESLint 10'a geçen ekipler için eklenti, upstream düzeltmesi hâlâ merge edilmediği sürede React 19 linting için işleyen bir yol sunuyor. Agresif kural elemesi ayrıca daha geniş bir değişimi örnekliyor: Biome gibi hızlı genel amaçlı linter'lar genişliği kapsadıkça, çerçeve eklentileri hâlâ gerçek bilgi kattıkları dar kontrollere küçülebilir.

  • #react
  • #eslint
  • #linting
  • #open-source
  • #static-analysis

İlgili yazılar