Eş Düzey Bağımlılıklar ve Ağaç Sarsma
React'i eş düzey bağımlılık olarak bildirin, yan etkisiz ağaç sarsmayı etkinleştirin ve yayımlanan paketi test edin
Eş Düzey Bağımlılıklar ve Ağaç Sarsma, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
Eş Bağımlılıklar Nelerdir?
Eş bağımlılıklar, kitaplığınızın ihtiyaç duyduğu ancak kullanıcıya sağlamasını beklediği paketleri bildirir. Kitaplığınızın package.json dosyasında React, dependencies yerine peerDependencies içinde yer almalıdır. Kullanıcı kitaplığınızı yüklediğinde npm/yarn React'i otomatik olarak yüklemez; kullanıcının uygulamasında zaten React vardır ve kitaplığınız bu örneği paylaşır.
React Neden dependencies İçine Konmamalı?
React, kitaplığınızın dependencies alanındaysa npm, kullanıcının React'inin yanına ikinci bir React kopyası yükleyebilir. Aynı uygulamadaki iki React örneği, tüm kancaları "Invalid hook call" hatasıyla bozar. React'i bir peerDependency olarak bildirerek npm'e "React'e ihtiyacım var, ancak kullanıcının zaten sahip olduğu sürümü kullanın" demiş olursunuz.
İsteğe Bağlı Eş Bağımlılıklar için peerDependenciesMeta
Bazı eş bağımlılıklar isteğe bağlı olabilir; örneğin hem styled-components hem de CSS Modules destekleyen bir kitaplık. İsteğe bağlı eş bağımlılıkları peerDependenciesMeta kullanarak işaretleyin: { 'styled-components': { optional: true } }. npm, eksik isteğe bağlı eş bağımlılıklar konusunda kullanıcıları uyarmaz; ancak isteğe bağlı paket yüklendiğinde TypeScript türleri yine sağlanabilir.
sideEffects Alanı
package.json içindeki sideEffects alanı, paketleyicilere kitaplığınızın ağaç sarsma için güvenli olup olmadığını bildirir. "sideEffects": false ayarı, webpack, Rollup ve benzeri araçlara kitaplığınızdaki herhangi bir modülü içe aktarmanın yan etkilere yol açmadığını bildirir; kullanılmayan tüm dışa aktarmalar kullanıcının paketinden güvenle çıkarılabilir.
CSS İçe Aktarmalarıyla sideEffects
CSS içe aktarmaları yaygın bir yan etkidir; içe aktarıldıklarında sayfaya stil eklerler. Kitaplığınız CSS dosyalarını içe aktarıyorsa paketleyicilere JS dosyalarının güvenle ağaç sarsılabileceğini, ancak CSS dosyalarının içe aktarıldıklarında her zaman dahil edilmesi gerektiğini bildirmek için "sideEffects": ["*.css", "*.scss"] ayarını yapın.
Adlandırılmış Dışa Aktarmalarla Ayrıntılı Ağaç Sarsma
Ağaç sarsmayı en üst düzeye çıkarmak için her bileşeni kendi dosyasından adlandırılmış dışa aktarma olarak sunun. index.ts dosyanızda her şeyi yeniden dışa aktarın: export { Button } from './Button'. Kullanıcı yalnızca Button'ı içe aktardığında paketleyici diğer tüm bileşenleri kaldırabilir. Yeniden dışa aktarmalar içeren toplama dosyaları bu yaklaşımı mümkün kılar.
Ağaç Sarsmanın Etkililiğini Sınama
Ağaç sarsmayı sınamak için bundlejs.com kullanın: içe aktarma ifadenizi yapıştırdığınızda gerçek paket boyutunu bildirir. size-limit npm paketi, package.json dosyanızda boyut bütçeleri tanımlamanıza ve içe aktarma boyutu sınırı aşarsa sürekli tümleştirme sürecini başarısız kılmanıza olanak tanır: "size-limit": [{ "path": "dist/index.js", "limit": "10 KB" }].
Yayımlama için Boyut Bütçesi
Kitaplığınızın içe aktarmaları için bir boyut bütçesi belirleyin. Bu bütçeyi zorunlu kılmak için sürekli tümleştirme sürecinde npx size-limit komutunu çalıştırın. Paket etkisinin zamanla büyümesi, kapsamın kontrolden çıkarak genişlediğini gösterir. Odaklanmış bir bileşen kitaplığı, tek tek bileşen içe aktarmalarını birkaç kilobaytın altında tutmalıdır. Gerilemeler kullanıcılara ulaşmadan önce bunlar için uyarı verin.
Bileşen Kitaplıklarında CSS-in-JS Kitaplıkları
Dağıtmayı planladığınız bileşen kitaplıklarında styled-components ve Emotion kullanmaktan kaçının. Bu çalışma zamanı CSS-in-JS çözümleri, kullanıcının aynı kitaplığı ve sürümü yüklemesini gerektirerek eş bağımlılık çakışmaları oluşturur. Kullanıcının uygulaması Tailwind veya düz CSS kullanıyorsa çalışma zamanı CSS-in-JS çözümünü yine de paketlemek zorundadır. Derleme zamanında düz CSS'ye dönüştürülen CSS Modules'ı tercih edin.
Kitaplıklarda CSS Modules
CSS Modules, bunları işleyen bir paketleyiciyle birlikte kullanıldığında kitaplıklarda iyi çalışır. tsup ve Rollup, CSS Modules çıktısını kapsamı sınırlandırılmış sınıf adları olarak doğrudan ekleyebilir. Kullanıcının herhangi bir yapılandırma yapması gerekmez; stiller zaten kapsamı sınırlandırılmış durumdadır ve JS paketine dahil edilir veya içe aktarılan ayrı bir CSS dosyası olarak sunulur.
devDependencies ile peerDependencies Karşılaştırması
Kendi geliştirme araçlarınız (tsup, TypeScript, sınama kitaplıkları ve Storybook) devDependencies içinde yer alır; bunlara yalnızca geliştirme sırasında ihtiyaç duyulur ve kullanıcılar için npm install işleminden çıkarılır. React hem çalışma zamanı gereksinimi olarak peerDependencies hem de kitaplığınızı yerel olarak derlemek ve sınamak için gereken devDependencies içinde yer alır.
sideEffects Alanının Anlamı
Bir kitaplığın package.json dosyasında "sideEffects": false ayarının yapılması paketleyicilere ne bildirir?
Ders Özeti: Eş Bağımlılıklar ve Ağaç Sarsma
Kullanıcıların uygulamalarındaki React örneğini paylaşmak için React'i dependencies yerine peerDependencies içinde bildirin. sideEffects: false, kitaplığınızın tamamen ağaç sarsılmasını sağlar. CSS içe aktarmalarının kaldırılmasını önlemek için sideEffects: ['*.css'] kullanın. Tek tek dosyalardaki adlandırılmış dışa aktarmalar, ağaç sarsma ayrıntı düzeyini en üst düzeye çıkarır. Sürekli tümleştirme sürecinde size-limit ile bir boyut bütçesini zorunlu kılın. Eş bağımlılık çakışmalarını önlemek için kitaplıklarda CSS-in-JS yerine CSS Modules'ı tercih edin.
Sıkça Sorulan Sorular
“Eş Düzey Bağımlılıklar ve Ağaç Sarsma” dersi ücretsiz mi?
Evet — “Eş Düzey Bağımlılıklar ve Ağaç Sarsma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“Eş Düzey Bağımlılıklar ve Ağaç Sarsma” dersinde ne öğreneceğim?
React'i eş düzey bağımlılık olarak bildirin, yan etkisiz ağaç sarsmayı etkinleştirin ve yayımlanan paketi test edin React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Eş Düzey Bağımlılıklar ve Ağaç Sarsma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Kitaplıklar için Rollup ve tsup ile Paketleme
- ESM ve CJS Çift Paket Çıktısı
- Eş Düzey Bağımlılıklar ve Ağaç Sarsma
- npm'ye Yayınlama ve Anlamsal Sürümleme