React Native’de Nx ile Monorepo Nasıl Oluşturulur?

Tabii, anlatımı daha net ve detaylı hale getirmek için React Native'de Nx ile Monorepo oluşturma adım adım şu şekilde yapılabilir:
Gereksinimler
- Node.js (en az LTS sürümü)
- Yarn paket yöneticisi
- React Native geliştirme ortamı
Adım 1: Yeni Monorepo Oluşturma
Yeni bir monorepo oluşturmak için aşağıdaki komutu çalıştırın:
luanpx create-nx-workspace monorepoBu komut, yeni bir Nx monorepo oluşturur.
monorepoadlı bir klasör oluşturulacak ve içinde Nx projeleri barındıracak bir altyapı oluşturulacaktır.Oluşturulan monorepo klasörüne girin:
bashcd monorepo
Adım 2: Yeni React Native Uygulaması Oluşturma
Yeni bir React Native uygulaması oluşturmak için aşağıdaki komutu çalıştırın:
scssnx generate @nrwl/react:application zsoftBu komut,
zsoftadlı yeni bir React Native uygulaması oluşturur. Bu uygulama, monorepo klasörü içindeappsklasörü altındazsoftadlı bir klasör oluşturur. Bu klasörde, React Native uygulamasının tüm kaynak dosyaları bulunur ve uygulama geliştirme işlemleri bu klasör altında yapılır.Yeni uygulamanın oluşturulmasından sonra, uygulamayı çalıştırmak için aşağıdaki komutu çalıştırın:
arduinonx run zsoft:androidBu komut,
zsoftuygulamasını Android emülatöründe çalıştıracaktır. Uygulama ilk kez çalıştırıldığında, bazı ek paketlerin indirilmesi gerekebilir.
Adım 3: Yeni Paket Oluşturma
Yeni bir paket oluşturmak için aşağıdaki komutu çalıştırın:
scssnx generate @nrwl/workspace:lib mylibBu komut,
mylibadlı yeni bir Nx paketi oluşturur. Bu paket, monorepo klasörü içindelibsklasörü altındamylibadlı bir klasör oluşturur. Bu klasörde,mylibadlı paketin tüm kaynak dosyaları bulunur ve paket geliştirme işlemleri bu klasör altında yapılır.Oluşturulan
mylibpaketininpackage.jsondosyasında,nameveversionalanlarını ayarlayın:json{ name: mylib, version: 0.0.1, //... }
Adım 4: Yeni Paketi Kullanma
mylibpaketinin kullanılabilmek içinzsoftuygulamasına bağlanması gerekmektedir. Bu nedenlezsoftuygulamasınınpackage.jsondosyasını açın.dependenciesbölümünemylibpaketini ekleyin vefile:../libs/mylibyolunu gösterin:json{ //... dependencies: { @react-native-community/masked-view: ^0.1.10, @react-navigation/native: ^6.0.6, @react-navigation/native-stack: ^6.2.5, react: 17.0.1, react-native: 0.64.2, react-native-gesture-handler: ^1.10.3, react-native-reanimated: ^2.2.0, react-native-safe-area-context: ^3.3.2, react-native-screens: ^3.8.0, mylib: file:../libs/mylib }, //... }Bu ayarlar,
zsoftuygulamasınınmylibpaketiyle bağlantılı olduğunu belirtir.zsoftuygulamasınınApp.tsxdosyasına gidin vemylibpaketini aşağıdaki gibi içe aktarın:typescriptimport { myFunction } from mylib;myFunction()fonksiyonunuApp.tsxdosyasında kullanın:typescriptexport default function App() { return ( <View style={styles.container}> <Text>{myFunction()}</Text> </View> ); }Uygulamayı çalıştırmak için aşağıdaki komutu kullanın:
arduinonx run zsoft:androidBu komut,
zsoftuygulamasını Android emülatöründe çalıştıracaktır. Uygulama başarıyla çalışırsa, ekrandaHello from mylibmetni görünür.
Artık mylib paketi zsoft uygulamasında kullanılabiliyor. Bu, bir monorepo içindeki paketler arasındaki bağımlılıkların yönetimini kolaylaştırır ve uygulama geliştirme işlemlerini daha düzenli bir şekilde yapmanızı sağlar.
Adım 5: Kodları Değişikliklerine Göre Yeniden Derleme
zsoftuygulamasınınApp.tsxdosyasındaki değişikliklerin ardından, uygulama yeniden derlenmelidir. Bunu yapmak için aşağıdaki komutu kullanın:arduinonx run zsoft:androidBu komut,
zsoftuygulamasını Android emülatöründe yeniden derleyecektir.mylibpaketindeki değişikliklerin ardından da,zsoftuygulaması yeniden derlenmelidir. Bunun için öncemylibpaketi derlenmeli ve ardındanzsoftuygulaması yeniden derlenmelidir. Bunu yapmak için aşağıdaki komutları kullanın:arduinonx run mylib:build nx run zsoft:androidBu komutlar,
mylibpaketinin derlenmesini ve ardındanzsoftuygulamasının Android emülatöründe yeniden derlenmesini sağlar.
Bu adımlar, React Native'de Nx ile monorepo oluşturmanın basit bir yolunu açıklar. Bu yöntem, uygulama geliştirme işlemlerini düzenli ve yönetilebilir hale getirir. Monorepo yapısının getirdiği avantajlar sayesinde, birçok paketin yönetimi ve kullanımı daha kolay hale gelir.