UNPKG

ignite-jhipster

Version:

A React Native boilerplate for JHipster apps.

132 lines (117 loc) 4.55 kB
const patchReactNativeNavigation = async (context = {}, props) => { // REACT_NATIVE_NAVIGATION_VERSION const { ignite, print } = context const spinner = print.spin('installing and linking react-native-navigation') spinner.start() // print.info('Installing and linking react-native-navigation') // set java packageName for android patches props.packageName = props.name.toLowerCase() const navigationFiles = [ { template: 'AppDelegate.m.ejs', target: `ios/${props.name}/AppDelegate.m` }, { template: 'MainActivity.java.ejs', target: `android/app/src/main/java/com/${props.name.toLowerCase()}/MainActivity.java` }, { template: 'MainApplication.java.ejs', target: `android/app/src/main/java/com/${props.name.toLowerCase()}/MainApplication.java` } ] if (props.authType === 'oauth2') { navigationFiles.push({ template: 'AppDelegate.h.ejs', target: `ios/${props.name}/AppDelegate.h` }) } await ignite.copyBatch(context, navigationFiles, props, { quiet: true, directory: `${__dirname}/../../templates/react-native-navigation/` }) // related to https://github.com/wix/react-native-navigation/issues/4691 const rnnPatch = [{ template: 'patches/react-native-navigation+2.16.0.patch', target: `patches/react-native-navigation+2.16.0.patch` }] await ignite.copyBatch(context, rnnPatch, props, { quiet: true, directory: `${__dirname}/../../boilerplate` }) spinner.succeed('set up react-native-navigation for iOS/Android') await updateIosFiles(context, props) await updateAndroidFiles(context, props) } const updateIosFiles = async (context, props) => { const { ignite } = context /*eslint-disable */ await ignite.patchInFile(`${process.cwd()}/ios/${props.name}/Info.plist`, { before: `<key>CFBundleDisplayName</key>`, insert: ` <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLName</key> <string>${props.name.toLowerCase()}</string> <key>CFBundleURLSchemes</key> <array> <string>${props.name.toLowerCase()}</string> </array> </dict> </array>` }) /* eslint-enable */ } const updateAndroidFiles = async (context, props) => { const { ignite } = context // settings.gradle await ignite.patchInFile(`${process.cwd()}/android/settings.gradle`, { after: `include ':app'`, insert: `include ':react-native-navigation'\nproject(':react-native-navigation').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-navigation/lib/android/app/')` }) // build.gradle await ignite.patchInFile(`${process.cwd()}/android/build.gradle`, { before: `mavenLocal()`, insert: ` google() mavenCentral() maven { url 'https://jitpack.io' }` }) await ignite.patchInFile(`${process.cwd()}/android/build.gradle`, { after: `repositories {`, insert: ` google() mavenLocal() mavenCentral()` }) // react-native-init uses a later version so this is not currently needed // await ignite.patchInFile(`${process.cwd()}/android/build.gradle`, { // replace: `buildToolsVersion = "26.0.3"`, // insert: `buildToolsVersion = "28.0.3"` // }) await ignite.patchInFile(`${process.cwd()}/android/build.gradle`, { replace: `minSdkVersion = 16`, insert: `minSdkVersion = 19` }) // app/build.gradle await ignite.patchInFile(`${process.cwd()}/android/app/build.gradle`, { after: `versionCode 1`, insert: ` missingDimensionStrategy "RNN.reactNativeVersion", "reactNative57_5"` }) await ignite.patchInFile(`${process.cwd()}/android/app/build.gradle`, { before: `buildTypes {`, insert: ` compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }` }) await ignite.patchInFile(`${process.cwd()}/android/app/build.gradle`, { before: `dependencies {`, insert: `configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { details.useVersion "\${rootProject.ext.supportLibVersion}" } } }` }) await ignite.patchInFile(`${process.cwd()}/android/app/build.gradle`, { after: `dependencies {`, insert: ` implementation "com.facebook.react:react-native:+" // From node_modules implementation project(':react-native-navigation')` }) } module.exports = { patchReactNativeNavigation }