react_native_util gem

Gem Downloads License CircleCI

Work in progress

Community utility CLI for React Native projects.

Prerequisites

macOS required

The react_pod command requires yarn from Homebrew and the react-native-cli. If installing react_native_util from the Homebrew tap, yarn will be automatically installed if not present. The react-native-cli may also be installed from Homebrew if desired:

brew install jdee/tap/react_native_util --with-react-native-cli

If running from RubyGems, please make sure these packages are installed:

brew install yarn
npm install -g react-native-cli

or

brew install react-native-cli

Installation

[sudo] gem install react_native_util

Install from Homebrew tap

brew install jdee/tap/react_native_util

Gemfile

gem 'react_native_util'

Usage

react_native_util -h
rn -h
rn react_pod -h

Try it out

Convert examples/TestApp using Rake.

bundle check || bundle install
bundle exec rake react_pod
git status

Typical command output:

2019-05-12T15:37:50-07:00 react_native_util react_pod v0.3.0
[✔] yarn install success in 7.2 s
2019-05-12T15:37:57-07:00  Darwin 18.5.0 x86_64
2019-05-12T15:37:57-07:00  Ruby 2.6.3: ~/.rvm/rubies/ruby-2.6.3/bin/ruby
2019-05-12T15:37:57-07:00  RubyGems 3.0.3: ~/.rvm/rubies/ruby-2.6.3/bin/gem
2019-05-12T15:37:57-07:00  Bundler 1.17.2: ~/.rvm/gems/ruby-2.6.3/bin/bundle
2019-05-12T15:37:57-07:00  react-native-cli: /usr/local/bin/react-native
2019-05-12T15:37:57-07:00   react-native-cli: 2.0.1
2019-05-12T15:37:57-07:00   react-native: 0.59.8
2019-05-12T15:37:58-07:00  yarn 1.16.0: /usr/local/bin/yarn
2019-05-12T15:37:58-07:00  cocoapods 1.6.1: ~/.rvm/gems/ruby-2.6.3/bin/pod
2019-05-12T15:37:58-07:00  cocoapods-core: 1.6.1
2019-05-12T15:37:58-07:00 package.json:
2019-05-12T15:37:58-07:00  app name: "TestApp"
2019-05-12T15:37:58-07:00 Found Xcode project at ~/github/jdee/react_native_util/examples/TestApp/ios/TestApp.xcodeproj
2019-05-12T15:37:58-07:00 Dependencies:
2019-05-12T15:37:58-07:00  react-native-webview
2019-05-12T15:37:58-07:00 Unlinking dependencies
[✔] react-native unlink react-native-webview success in 0.6 s
2019-05-12T15:37:59-07:00 Removing Libraries from TestApp
2019-05-12T15:37:59-07:00 Removing Libraries from TestAppTests
2019-05-12T15:37:59-07:00 Removing Libraries group
2019-05-12T15:37:59-07:00 Generating ios/Podfile
2019-05-12T15:37:59-07:00 Linking dependencies
[✔] react-native link react-native-webview success in 0.5 s
2019-05-12T15:37:59-07:00 Generating Pods project and ios/TestApp.xcworkspace
[✔] pod install success in 12.2 s
2019-05-12T15:38:12-07:00 Conversion complete ✅
2019-05-12T15:38:12-07:00 $ open ios/TestApp.xcworkspace

Rake task

Add to Rakefile:

require 'react_native_util/rake'
ReactNativeUtil::Rake::ReactPodTask.new

Customize:

require 'react_native_util/rake'
ReactNativeUtil::Rake::ReactPodTask.new(
  :react_pod,                         # task name
  'Convert project to use React pod', # description
  chdir: '/path/to/rn/project',       # path to project package.json
  repo_update: true                   # optionally disable pod repo update
)

Ruby script

require 'react_native_util/converter'

Dir.chdir '/path/to/rn/project' do
  begin
    ReactNativeUtil::Converter.new(repo_update: true).convert_to_react_pod!
  rescue ReactNativeUtil::BaseException => e
    puts "Error from #convert_to_react_pod!: #{e.message}"
  end
end