GitHub - brody4hire/react-native-module-init (original) (raw)

Interactive utility to create native React Native modules and views, with some major help from:

brodybits@brodybits-mini-mac-book work % react-native-module-init ℹ react-native-module-init 0.5.0 ✔ What is the desired native module name? … awesome module ✔ Should it be a view? … no / yes ℹ OK, continuing with isView: false ✔ What is the full native module package name? … react-native-awesome-module ✔ Initial package version is 1.0.0 - continue? … yes ✔ What is the desired native object class name prefix (can be blank)? … super ✔ Desired object class name to use between JavaScript & native code? … SUPERAwesomeModule ✔ Which native platforms? › Android, iOS ✔ What is the desired Android package id? … com.demo ✔ Support Apple tvOS (requires react-native-tvos fork)? … no ✔ What is the author name? … Christopher J. Brody ✔ What is the author email? … chris.brody+brodybits@gmail.com ✔ What is the GitHub user account name? … brodybits ✔ What license? … MIT ✔ Generate with sample use of Apple Networking? … no ℹ It is possible to generate an example app for testing, ℹ with workarounds in metro.config.js for metro linking issues ℹ Requirements: Yarn; pod is needed for iOS ✔ Generate the example app (with workarounds in metro.config.js)? … yes ✔ Example app name? … example ✔ What react-native template to use for the example app (should be for at least react-native@0.60)? … react-native@latest ℹ checking that Yarn CLI can show its version ✔ Yarn CLI ok ℹ generating the native library module as a package CREATE new React Native module with the following options:

                    name: awesome module
       full package name: react-native-awesome-module
                 is view: false
       object class name: SUPERAwesomeModule
 Android nativePackageId: com.demo
               platforms: android,ios
       Apple tvosEnabled: false
              authorName: Christopher J. Brody
             authorEmail: chris.brody+brodybits@gmail.com
    author githubAccount: brodybits
                 license: MIT
      useAppleNetworking: false

CREATE: Generating the React Native library module ✔ native library module generated ok ℹ generating the example app [...] ℹ generating App.js in the example app ℹ rewrite metro.config.js with workaround solutions ✔ example app generated ok ℹ adding the native library module into the example app as a dependency link yarn add v1.22.11 [1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... warning "react-native > react-native-codegen > jscodeshift@0.11.0" has unmet peer dependency "@babel/preset-env@^7.1.6". warning "@react-native-community/eslint-config > @typescript-eslint/eslint-plugin > tsutils@3.21.0" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta". [4/4] 🔨 Building fresh packages... success Saved lockfile. success Saved 1 new dependency. info Direct dependencies └─ react-native-awesome-module@0.0.0 info All dependencies └─ react-native-awesome-module@0.0.0 ✨ Done in 9.52s. ✔ added the native library module into the example app as a dependency link - ok ℹ checking that the pod tool can show its version ✔ pod tool ok ℹ starting additional pod install in ios subdirectory of example app Auto-linking React Native module for target example: react-native-awesome-module Analyzing dependencies Downloading dependencies Installing react-native-awesome-module (1.0.0) Generating Pods project Integrating client project Pod installation complete! There are 50 dependencies from the Podfile and 41 total pods installed. ✔ additional pod install ok 💡 check out the example app in react-native-awesome-module/example ℹ (/Users/brodybits/work/react-native-awesome-module/example) 💡 recommended: run Metro Bundler in a new shell ℹ (cd react-native-awesome-module/example && yarn start) 💡 enter the following commands to run the example app: ℹ cd react-native-awesome-module/example ℹ yarn android # for React Native 0.60: npx react-native run-android ℹ yarn ios # for React Native 0.60: npx react-native run-ios ⚠ first steps in case of a clean checkout ℹ run Yarn in react-native-awesome-module/example ℹ (cd react-native-awesome-module/example && yarn) ℹ do pod install for iOS in react-native-awesome-module/example/ios ℹ (cd react-native-awesome-module/example/ios && pod install) brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % ls react-native-awesome-module README.md ios android package.json example react-native-awesome-module.podspec index.js brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % cat react-native-awesome-module/index.js // main index.js

import { NativeModules } from 'react-native';

const { SUPERAwesomeModule } = NativeModules;

export default SUPERAwesomeModule; brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % tree react-native-awesome-module/android react-native-awesome-module/android ├── README.md ├── build.gradle └── src └── main ├── AndroidManifest.xml └── java └── com └── demo ├── SUPERAwesomeModuleModule.java └── SUPERAwesomeModulePackage.java

5 directories, 5 files brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % tree react-native-awesome-module/ios react-native-awesome-module/ios ├── SUPERAwesomeModule.h ├── SUPERAwesomeModule.m ├── SUPERAwesomeModule.xcodeproj │   └── project.pbxproj └── SUPERAwesomeModule.xcworkspace └── contents.xcworkspacedata

2 directories, 4 files brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % ls react-native-awesome-module/example App.js android babel.config.js ios node_modules yarn.lock tests app.json index.js metro.config.js package.json

brodybits@brodybits-mini-mac-book work % react-native-module-init ℹ react-native-module-init 0.5.0 ✔ What is the desired native module name? … awesome view ✔ Should it be a view? … no / yes ℹ OK, continuing with isView: true ✔ What is the full native view package name? … react-native-awesome-view ✔ Initial package version is 1.0.0 - continue? … yes ✔ What is the desired native object class name prefix (can be blank)? … super ✔ Desired object class name to use between JavaScript & native code? … SUPERAwesomeView ✔ Which native platforms? › Android, iOS ✔ What is the desired Android package id? … com.demo ✔ Support Apple tvOS (requires react-native-tvos fork)? … no ✔ What is the author name? … Christopher J. Brody ✔ What is the author email? … chris.brody+brodybits@gmail.com ✔ What is the GitHub user account name? … brodybits ✔ What license? … MIT ℹ It is possible to generate an example app for testing, ℹ with workarounds in metro.config.js for metro linking issues ℹ Requirements: Yarn; pod is needed for iOS ✔ Generate the example app (with workarounds in metro.config.js)? … yes ✔ Example app name? … example ✔ What react-native template to use for the example app (should be for at least react-native@0.60)? … react-native@latest ℹ checking that Yarn CLI can show its version ✔ Yarn CLI ok ℹ generating the native library module as a package CREATE new React Native module with the following options:

                    name: awesome view
       full package name: react-native-awesome-view
                 is view: true
       object class name: SUPERAwesomeView
 Android nativePackageId: com.demo
               platforms: android,ios
       Apple tvosEnabled: false
              authorName: Christopher J. Brody
             authorEmail: chris.brody+brodybits@gmail.com
    author githubAccount: brodybits
                 license: MIT
      useAppleNetworking: false

CREATE: Generating the React Native library module ✔ native library module generated ok ℹ generating the example app [...] ℹ generating App.js in the example app ℹ rewrite metro.config.js with workaround solutions ✔ example app generated ok ℹ adding the native library module into the example app as a dependency link yarn add v1.22.11 [1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... warning "react-native > react-native-codegen > jscodeshift@0.11.0" has unmet peer dependency "@babel/preset-env@^7.1.6". warning "@react-native-community/eslint-config > @typescript-eslint/eslint-plugin > tsutils@3.21.0" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta". [4/4] 🔨 Building fresh packages... success Saved lockfile. success Saved 1 new dependency. info Direct dependencies └─ react-native-awesome-view@0.0.0 info All dependencies └─ react-native-awesome-view@0.0.0 ✨ Done in 13.75s. ✔ added the native library module into the example app as a dependency link - ok ℹ checking that the pod tool can show its version ✔ pod tool ok ℹ starting additional pod install in ios subdirectory of example app Auto-linking React Native module for target example: react-native-awesome-view Analyzing dependencies Downloading dependencies Installing react-native-awesome-view (1.0.0) Generating Pods project Integrating client project Pod installation complete! There are 50 dependencies from the Podfile and 41 total pods installed. ✔ additional pod install ok 💡 check out the example app in react-native-awesome-view/example ℹ (/Users/brodybits/work/react-native-awesome-view/example) 💡 recommended: run Metro Bundler in a new shell ℹ (cd react-native-awesome-view/example && yarn start) 💡 enter the following commands to run the example app: ℹ cd react-native-awesome-view/example ℹ yarn android # for React Native 0.60: npx react-native run-android ℹ yarn ios # for React Native 0.60: npx react-native run-ios ⚠ first steps in case of a clean checkout ℹ run Yarn in react-native-awesome-view/example ℹ (cd react-native-awesome-view/example && yarn) ℹ do pod install for iOS in react-native-awesome-view/example/ios ℹ (cd react-native-awesome-view/example/ios && pod install) brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % ls react-native-awesome-view README.md ios android package.json example react-native-awesome-view.podspec index.js brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % cat react-native-awesome-view/index.js // main index.js

import { requireNativeComponent } from 'react-native';

const SUPERAwesomeView = requireNativeComponent('SUPERAwesomeView', null);

export default SUPERAwesomeView; brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % tree react-native-awesome-view/android react-native-awesome-view/android ├── README.md ├── build.gradle └── src └── main ├── AndroidManifest.xml └── java └── com └── demo ├── SUPERAwesomeViewManager.java └── SUPERAwesomeViewPackage.java

5 directories, 5 files brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % tree react-native-awesome-view/ios react-native-awesome-view/ios ├── SUPERAwesomeView.h ├── SUPERAwesomeView.m ├── SUPERAwesomeView.xcodeproj │   └── project.pbxproj └── SUPERAwesomeView.xcworkspace └── contents.xcworkspacedata

2 directories, 4 files brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work % ls react-native-awesome-view/example App.js android babel.config.js ios node_modules yarn.lock tests app.json index.js metro.config.js package.json brodybits@brodybits-mini-mac-book work % brodybits@brodybits-mini-mac-book work %