diff --git a/packages/create-react-native-library/src/template.ts b/packages/create-react-native-library/src/template.ts index 8e0583896..087aed51a 100644 --- a/packages/create-react-native-library/src/template.ts +++ b/packages/create-react-native-library/src/template.ts @@ -72,6 +72,7 @@ const NATIVE_COMMON_EXAMPLE_FILES = path.resolve( __dirname, '../templates/native-common-example' ); +const NITRO_COMMON_FILES = path.resolve(__dirname, '../templates/nitro-common'); const NATIVE_FILES = { module_new: path.resolve(__dirname, '../templates/native-library-new'), @@ -211,11 +212,13 @@ export async function applyTemplates( } if (config.project.moduleConfig === 'nitro-modules') { + await applyTemplate(config, NITRO_COMMON_FILES, folder); await applyTemplate(config, NATIVE_FILES['module_nitro'], folder); return; } if (config.project.viewConfig === 'nitro-view') { + await applyTemplate(config, NITRO_COMMON_FILES, folder); await applyTemplate(config, NATIVE_FILES['view_nitro'], folder); return; } diff --git a/packages/create-react-native-library/templates/example-common/example/metro.config.js b/packages/create-react-native-library/templates/example-common/example/metro.config.js index 2da198e82..565abf361 100644 --- a/packages/create-react-native-library/templates/example-common/example/metro.config.js +++ b/packages/create-react-native-library/templates/example-common/example/metro.config.js @@ -1,5 +1,5 @@ const path = require('path'); -const { getDefaultConfig } = require('@react-native/metro-config'); +const { getDefaultConfig } = require('<% if (example === 'expo') { -%>@expo/metro-config<% } else { -%>@react-native/metro-config<% } -%>'); const { withMetroConfig } = require('react-native-monorepo-config'); const root = path.resolve(__dirname, '..'); @@ -10,7 +10,9 @@ const root = path.resolve(__dirname, '..'); * * @type {import('metro-config').MetroConfig} */ -module.exports = withMetroConfig(getDefaultConfig(__dirname), { +const config = withMetroConfig(getDefaultConfig(__dirname), { root, dirname: __dirname, }); + +module.exports = config; diff --git a/packages/create-react-native-library/templates/expo-library/example/metro.config.js b/packages/create-react-native-library/templates/expo-library/example/metro.config.js deleted file mode 100644 index 097c7e0ae..000000000 --- a/packages/create-react-native-library/templates/expo-library/example/metro.config.js +++ /dev/null @@ -1,20 +0,0 @@ -const path = require('path'); -const { getDefaultConfig } = require('@expo/metro-config'); -const { withMetroConfig } = require('react-native-monorepo-config'); - -const root = path.resolve(__dirname, '..'); - -/** - * Metro configuration - * https://facebook.github.io/metro/docs/configuration - * - * @type {import('metro-config').MetroConfig} - */ -const config = withMetroConfig(getDefaultConfig(__dirname), { - root, - dirname: __dirname, -}); - -config.resolver.unstable_enablePackageExports = true; - -module.exports = config; diff --git a/packages/create-react-native-library/templates/kotlin-library-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Module.kt b/packages/create-react-native-library/templates/kotlin-library-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Module.kt index 5da133031..a98f298e1 100644 --- a/packages/create-react-native-library/templates/kotlin-library-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Module.kt +++ b/packages/create-react-native-library/templates/kotlin-library-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Module.kt @@ -3,21 +3,10 @@ package com.<%- project.package %> import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.module.annotations.ReactModule -@ReactModule(name = <%- project.name -%>Module.NAME) class <%- project.name -%>Module(reactContext: ReactApplicationContext) : Native<%- project.name -%>Spec(reactContext) { - override fun getName(): String { - return NAME - } - - // Example method - // See https://reactnative.dev/docs/native-modules-android override fun multiply(a: Double, b: Double): Double { return a * b } - - companion object { - const val NAME = "<%- project.name -%>" - } } diff --git a/packages/create-react-native-library/templates/kotlin-view-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Package.kt b/packages/create-react-native-library/templates/kotlin-view-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Package.kt index 9f3ab9124..929a56c18 100644 --- a/packages/create-react-native-library/templates/kotlin-view-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Package.kt +++ b/packages/create-react-native-library/templates/kotlin-view-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Package.kt @@ -1,19 +1,17 @@ package com.<%- project.package %> -import com.facebook.react.ReactPackage +import com.facebook.react.BaseReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.module.model.ReactModuleInfoProvider import com.facebook.react.uimanager.ViewManager -import java.util.ArrayList -class <%- project.name -%>ViewPackage : ReactPackage { +class <%- project.name -%>ViewPackage : BaseReactPackage() { override fun createViewManagers(reactContext: ReactApplicationContext): List> { - val viewManagers: MutableList> = ArrayList() - viewManagers.add(<%- project.name -%>ViewManager()) - return viewManagers + return listOf(<%- project.name -%>ViewManager()) } - override fun createNativeModules(reactContext: ReactApplicationContext): List { - return emptyList() - } + override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? = null + + override fun getReactModuleInfoProvider(): ReactModuleInfoProvider = ReactModuleInfoProvider { emptyMap() } } diff --git a/packages/create-react-native-library/templates/native-common/android/build.gradle b/packages/create-react-native-library/templates/native-common/android/build.gradle index 895500f41..c7d22cea3 100644 --- a/packages/create-react-native-library/templates/native-common/android/build.gradle +++ b/packages/create-react-native-library/templates/native-common/android/build.gradle @@ -111,7 +111,7 @@ android { } } - lintOptions { + lint { disable "GradleCompatible" } @@ -119,27 +119,10 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } - - sourceSets { - main { - java.srcDirs += [ - "generated/java", - "generated/jni" - ] - } - } } -repositories { - mavenCentral() - google() -} - -def kotlin_version = getExtOrDefault("kotlinVersion") - dependencies { implementation "com.facebook.react:react-android" - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" <% if (project.moduleConfig === 'nitro-modules' || project.viewConfig === 'nitro-view') { -%> implementation project(":react-native-nitro-modules") <% } -%> diff --git a/packages/create-react-native-library/templates/nitro-module/android/CMakeLists.txt b/packages/create-react-native-library/templates/nitro-common/android/CMakeLists.txt similarity index 100% rename from packages/create-react-native-library/templates/nitro-module/android/CMakeLists.txt rename to packages/create-react-native-library/templates/nitro-common/android/CMakeLists.txt diff --git a/packages/create-react-native-library/templates/nitro-module/android/src/main/cpp/cpp-adapter.cpp b/packages/create-react-native-library/templates/nitro-common/android/src/main/cpp/cpp-adapter.cpp similarity index 100% rename from packages/create-react-native-library/templates/nitro-module/android/src/main/cpp/cpp-adapter.cpp rename to packages/create-react-native-library/templates/nitro-common/android/src/main/cpp/cpp-adapter.cpp diff --git a/packages/create-react-native-library/templates/nitro-view/nitro.json b/packages/create-react-native-library/templates/nitro-common/nitro.json similarity index 63% rename from packages/create-react-native-library/templates/nitro-view/nitro.json rename to packages/create-react-native-library/templates/nitro-common/nitro.json index 78941a518..f4b2ecd63 100644 --- a/packages/create-react-native-library/templates/nitro-view/nitro.json +++ b/packages/create-react-native-library/templates/nitro-common/nitro.json @@ -9,8 +9,8 @@ }, "autolinking": { "<%- project.name -%>": { - "swift": "Hybrid<%- project.name -%>", - "kotlin": "Hybrid<%- project.name -%>" + "swift": "<% if (project.viewConfig === 'nitro-view') { -%>Hybrid<% } -%><%- project.name -%>", + "kotlin": "<% if (project.viewConfig === 'nitro-view') { -%>Hybrid<% } -%><%- project.name -%>" } }, "ignorePaths": ["node_modules"] diff --git a/packages/create-react-native-library/templates/nitro-module/nitro.json b/packages/create-react-native-library/templates/nitro-module/nitro.json deleted file mode 100644 index 8a1674a36..000000000 --- a/packages/create-react-native-library/templates/nitro-module/nitro.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "cxxNamespace": ["<%- project.package_cpp -%>"], - "ios": { - "iosModuleName": "<%- project.name -%>" - }, - "android": { - "androidNamespace": <%- JSON.stringify(project.package.split('.')) -%>, - "androidCxxLibName": "<%- project.package_cpp -%>" - }, - "autolinking": { - "<%- project.name -%>": { - "swift": "<%- project.name -%>", - "kotlin": "<%- project.name -%>" - } - }, - "ignorePaths": ["node_modules"] -} diff --git a/packages/create-react-native-library/templates/nitro-view/android/CMakeLists.txt b/packages/create-react-native-library/templates/nitro-view/android/CMakeLists.txt deleted file mode 100644 index 1fa9ed39d..000000000 --- a/packages/create-react-native-library/templates/nitro-view/android/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -project(<%- project.package_cpp -%>) -cmake_minimum_required(VERSION 3.9.0) - -set(PACKAGE_NAME <%- project.package_cpp -%>) -set(CMAKE_VERBOSE_MAKEFILE ON) -set(CMAKE_CXX_STANDARD 20) - -# Define C++ library and add all sources -add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp) - -# Add Nitrogen specs :) -include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/<%- project.package_cpp -%>+autolinking.cmake) - -# Set up local includes -include_directories("src/main/cpp" "../cpp") - -find_library(LOG_LIB log) - -# Link all libraries together -target_link_libraries( - ${PACKAGE_NAME} - ${LOG_LIB} - android # <-- Android core -) diff --git a/packages/create-react-native-library/templates/nitro-view/android/src/main/cpp/cpp-adapter.cpp b/packages/create-react-native-library/templates/nitro-view/android/src/main/cpp/cpp-adapter.cpp deleted file mode 100644 index 8e1f6123b..000000000 --- a/packages/create-react-native-library/templates/nitro-view/android/src/main/cpp/cpp-adapter.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include "<%- project.package_cpp -%>OnLoad.hpp" - -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) { - return margelo::nitro::<%- project.package_cpp -%>::initialize(vm); -} diff --git a/packages/create-react-native-library/templates/objc-view-new/ios/{%- project.name %}View.mm b/packages/create-react-native-library/templates/objc-view-new/ios/{%- project.name %}View.mm index c9b518d79..12bf7dc9c 100644 --- a/packages/create-react-native-library/templates/objc-view-new/ios/{%- project.name %}View.mm +++ b/packages/create-react-native-library/templates/objc-view-new/ios/{%- project.name %}View.mm @@ -35,7 +35,7 @@ - (instancetype)initWithFrame:(CGRect)frame - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps { - const auto &oldViewProps = *std::static_pointer_cast<<%- project.name -%>ViewProps const>(_props); + const auto &oldViewProps = *std::static_pointer_cast<<%- project.name -%>ViewProps const>(oldProps); const auto &newViewProps = *std::static_pointer_cast<<%- project.name -%>ViewProps const>(props); if (oldViewProps.color != newViewProps.color) {