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 monorepo
Bu komut, yeni bir Nx monorepo oluşturur.
monorepo
adlı 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 zsoft
Bu komut,
zsoft
adlı yeni bir React Native uygulaması oluşturur. Bu uygulama, monorepo klasörü içindeapps
klasörü altındazsoft
adlı 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:android
Bu komut,
zsoft
uygulaması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 mylib
Bu komut,
mylib
adlı yeni bir Nx paketi oluşturur. Bu paket, monorepo klasörü içindelibs
klasörü altındamylib
adlı bir klasör oluşturur. Bu klasörde,mylib
adlı paketin tüm kaynak dosyaları bulunur ve paket geliştirme işlemleri bu klasör altında yapılır.Oluşturulan
mylib
paketininpackage.json
dosyasında,name
veversion
alanlarını ayarlayın:json{ name: mylib, version: 0.0.1, //... }
Adım 4: Yeni Paketi Kullanma
mylib
paketinin kullanılabilmek içinzsoft
uygulamasına bağlanması gerekmektedir. Bu nedenlezsoft
uygulamasınınpackage.json
dosyasını açın.dependencies
bölümünemylib
paketini ekleyin vefile:../libs/mylib
yolunu 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,
zsoft
uygulamasınınmylib
paketiyle bağlantılı olduğunu belirtir.zsoft
uygulamasınınApp.tsx
dosyasına gidin vemylib
paketini aşağıdaki gibi içe aktarın:typescriptimport { myFunction } from mylib;
myFunction()
fonksiyonunuApp.tsx
dosyası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:android
Bu komut,
zsoft
uygulamasını Android emülatöründe çalıştıracaktır. Uygulama başarıyla çalışırsa, ekrandaHello from mylib
metni 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
zsoft
uygulamasınınApp.tsx
dosyasındaki değişikliklerin ardından, uygulama yeniden derlenmelidir. Bunu yapmak için aşağıdaki komutu kullanın:arduinonx run zsoft:android
Bu komut,
zsoft
uygulamasını Android emülatöründe yeniden derleyecektir.mylib
paketindeki değişikliklerin ardından da,zsoft
uygulaması yeniden derlenmelidir. Bunun için öncemylib
paketi derlenmeli ve ardındanzsoft
uygulaması yeniden derlenmelidir. Bunu yapmak için aşağıdaki komutları kullanın:arduinonx run mylib:build nx run zsoft:android
Bu komutlar,
mylib
paketinin derlenmesini ve ardındanzsoft
uygulaması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.