class Cavendish::Commands::AddReactNavigation

Public Instance Methods

perform() click to toggle source
# File lib/cavendish/commands/add_react_navigation.rb, line 4
def perform
  install_dependencies
  add_example_navigator_and_screens
  replace_app_entrypoint
end

Private Instance Methods

add_example_navigator_and_screens() click to toggle source
# File lib/cavendish/commands/add_react_navigation.rb, line 17
def add_example_navigator_and_screens
  copy_template('src/screens/HomeScreen.jsx', 'src/screens/HomeScreen.jsx')
  copy_file('src/navigators/HomeNavigator.jsx', 'src/navigators/HomeNavigator.jsx')
end
install_dependencies() click to toggle source
# File lib/cavendish/commands/add_react_navigation.rb, line 12
def install_dependencies
  run_in_project("yarn add #{react_navigation_core_dependencies.join(' ')}")
  run_in_project("expo install #{react_navigation_side_dependencies.join(' ')}")
end
react_navigation_core_dependencies() click to toggle source
# File lib/cavendish/commands/add_react_navigation.rb, line 27
def react_navigation_core_dependencies
  [
    "@react-navigation/native@#{Cavendish::REACT_NAVIGATION_VERSION}",
    "@react-navigation/stack@#{Cavendish::REACT_NAVIGATION_VERSION}"
  ]
end
react_navigation_side_dependencies() click to toggle source
# File lib/cavendish/commands/add_react_navigation.rb, line 34
def react_navigation_side_dependencies
  %w[
    react-native-gesture-handler
    react-native-reanimated
    react-native-screens
    react-native-safe-area-context
    @react-native-community/masked-view
  ]
end
replace_app_entrypoint() click to toggle source
# File lib/cavendish/commands/add_react_navigation.rb, line 22
def replace_app_entrypoint
  remove_in_project('App.js')
  copy_file('App.jsx', 'App.jsx')
end