Class: ReactOnRails::PacksGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/react_on_rails/packs_generator.rb

Overview

rubocop:disable Metrics/ClassLength

Constant Summary collapse

CONTAINS_CLIENT_OR_SERVER_REGEX =
/\.(server|client)($|\.)/
COMPONENT_EXTENSIONS =
/\.(jsx?|tsx?)$/
MINIMUM_SHAKAPACKER_VERSION =
"6.5.1"
MINIMUM_SHAKAPACKER_VERSION_FOR_AUTO_BUNDLING =

Auto-registration requires nested_entries support which was added in 7.0.0

"7.0.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.instanceObject



15
16
17
# File 'lib/react_on_rails/packs_generator.rb', line 15

def self.instance
  @instance ||= PacksGenerator.new
end

Instance Method Details

#generate_packs_if_staleObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/react_on_rails/packs_generator.rb', line 25

def generate_packs_if_stale
  return unless ReactOnRails.configuration.auto_load_bundle

  add_generated_pack_to_server_bundle

  # Clean any non-generated files from directories
  clean_non_generated_files_with_feedback

  are_generated_files_present_and_up_to_date = Dir.exist?(generated_packs_directory_path) &&
                                               File.exist?(generated_server_bundle_file_path) &&
                                               !stale_or_missing_packs?

  if are_generated_files_present_and_up_to_date
    puts Rainbow("✅ Generated packs are up to date, no regeneration needed").green
    return
  end

  clean_generated_directories_with_feedback
  generate_packs
end

#react_on_rails_npm_packageObject



19
20
21
22
23
# File 'lib/react_on_rails/packs_generator.rb', line 19

def react_on_rails_npm_package
  return "react-on-rails-pro" if ReactOnRails::Utils.react_on_rails_pro?

  "react-on-rails"
end