class React::Generators::InstallGenerator
Constants
- WEBPACKER_SETUP_UJS
Public Instance Methods
create_directory()
click to toggle source
Make an empty ‘components/` directory in the right place:
# File lib/generators/react/install_generator.rb, line 20 def create_directory components_dir = if webpacker? Pathname.new(javascript_dir).parent.to_s else javascript_dir end empty_directory File.join(components_dir, 'components') unless options[:skip_git] create_file File.join(components_dir, 'components/.keep') end end
create_server_rendering()
click to toggle source
# File lib/generators/react/install_generator.rb, line 41 def create_server_rendering if options[:skip_server_rendering] return elsif webpacker? ssr_manifest_path = File.join(javascript_dir, 'server_rendering.js') template('server_rendering_pack.js', ssr_manifest_path) else ssr_manifest_path = File.join(javascript_dir, 'server_rendering.js') template('server_rendering.js', ssr_manifest_path) initializer_path = 'config/initializers/react_server_rendering.rb' template('react_server_rendering.rb', initializer_path) end end
setup_react()
click to toggle source
Add requires, setup UJS
# File lib/generators/react/install_generator.rb, line 33 def setup_react if webpacker? setup_react_webpacker else setup_react_sprockets end end
Private Instance Methods
javascript_dir()
click to toggle source
# File lib/generators/react/install_generator.rb, line 61 def javascript_dir if webpacker? webpack_source_path .relative_path_from(::Rails.root) .to_s else 'app/assets/javascripts' end end
manifest()
click to toggle source
# File lib/generators/react/install_generator.rb, line 71 def manifest Pathname.new(destination_root).join(javascript_dir, 'application.js') end
setup_react_sprockets()
click to toggle source
# File lib/generators/react/install_generator.rb, line 75 def setup_react_sprockets require_react = "//= require react\n//= require react_ujs\n//= require components\n" if manifest.exist? manifest_contents = File.read(manifest) if match = manifest_contents.match(/\/\/=\s+require\s+turbolinks\s+\n/) inject_into_file manifest, require_react, { after: match[0] } elsif match = manifest_contents.match(/\/\/=\s+require_tree[^\n]*/) inject_into_file manifest, require_react, { before: match[0] } else append_file manifest, require_react end else create_file manifest, require_react end components_js = "//= require_tree ./components\n" components_file = File.join(javascript_dir, 'components.js') create_file components_file, components_js end
setup_react_webpacker()
click to toggle source
# File lib/generators/react/install_generator.rb, line 104 def setup_react_webpacker `yarn add react_ujs` if manifest.exist? append_file(manifest, WEBPACKER_SETUP_UJS) else create_file(manifest, WEBPACKER_SETUP_UJS) end end
webpack_source_path()
click to toggle source
# File lib/generators/react/install_generator.rb, line 115 def webpack_source_path if Webpacker.respond_to?(:config) Webpacker.config.source_entry_path # Webpacker >3 else Webpacker::Configuration.source_path.join(Webpacker::Configuration.entry_path) # Webpacker <3 end end
webpacker?()
click to toggle source
# File lib/generators/react/install_generator.rb, line 57 def webpacker? !!defined?(Webpacker) end