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

React Native ve Nx
React Native ve Nx

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

  1. Yeni bir monorepo oluşturmak için aşağıdaki komutu çalıştırın:

    lua
    npx 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.

  2. Oluşturulan monorepo klasörüne girin:

    bash
    cd monorepo

Adım 2: Yeni React Native Uygulaması Oluşturma

  1. Yeni bir React Native uygulaması oluşturmak için aşağıdaki komutu çalıştırın:

    scss
    nx generate @nrwl/react:application zsoft

    Bu komut, zsoft adlı yeni bir React Native uygulaması oluşturur. Bu uygulama, monorepo klasörü içinde apps klasörü altında zsoft 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.

  2. Yeni uygulamanın oluşturulmasından sonra, uygulamayı çalıştırmak için aşağıdaki komutu çalıştırın:

    arduino
    nx 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

  1. Yeni bir paket oluşturmak için aşağıdaki komutu çalıştırın:

    scss
    nx generate @nrwl/workspace:lib mylib

    Bu komut, mylib adlı yeni bir Nx paketi oluşturur. Bu paket, monorepo klasörü içinde libs klasörü altında mylib 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.

  2. Oluşturulan mylib paketinin package.json dosyasında, name ve version alanlarını ayarlayın:

    json
    { name: mylib, version: 0.0.1, //... }

Adım 4: Yeni Paketi Kullanma

  1. mylib paketinin kullanılabilmek için zsoft uygulamasına bağlanması gerekmektedir. Bu nedenle zsoft uygulamasının package.json dosyasını açın.

  2. dependencies bölümüne mylib paketini ekleyin ve file:../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ın mylib paketiyle bağlantılı olduğunu belirtir.

  3. zsoft uygulamasının App.tsx dosyasına gidin ve mylib paketini aşağıdaki gibi içe aktarın:

    typescript
    import { myFunction } from mylib;
  4. myFunction() fonksiyonunu App.tsx dosyasında kullanın:

    typescript
    export default function App() { return ( <View style={styles.container}> <Text>{myFunction()}</Text> </View> ); }
  5. Uygulamayı çalıştırmak için aşağıdaki komutu kullanın:

    arduino
    nx run zsoft:android

    Bu komut, zsoft uygulamasını Android emülatöründe çalıştıracaktır. Uygulama başarıyla çalışırsa, ekranda Hello 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

  1. zsoft uygulamasının App.tsx dosyasındaki değişikliklerin ardından, uygulama yeniden derlenmelidir. Bunu yapmak için aşağıdaki komutu kullanın:

    arduino
    nx run zsoft:android

    Bu komut, zsoft uygulamasını Android emülatöründe yeniden derleyecektir.

  2. mylib paketindeki değişikliklerin ardından da, zsoft uygulaması yeniden derlenmelidir. Bunun için önce mylib paketi derlenmeli ve ardından zsoft uygulaması yeniden derlenmelidir. Bunu yapmak için aşağıdaki komutları kullanın:

    arduino
    nx run mylib:build nx run zsoft:android

    Bu komutlar, mylib paketinin derlenmesini ve ardından zsoft 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.