Class: ViteRuby
- Inherits:
-
Object
- Object
- ViteRuby
- Extended by:
- Forwardable
- Defined in:
- lib/vite_ruby.rb,
lib/vite_ruby/version.rb
Defined Under Namespace
Modules: CompatibilityCheck, IO Classes: Build, Builder, CLI, Commands, Config, DevServerProxy, Error, Manifest, MissingEntrypointError, MissingExecutableError, Runner
Constant Summary collapse
- ENV_PREFIX =
Internal: Prefix used for environment variables that modify the configuration.
'VITE_RUBY'- COMPANION_LIBRARIES =
Internal: Companion libraries for Vite Ruby, and their target framework.
{ 'vite_rails' => 'rails', 'vite_hanami' => 'hanami', 'vite_padrino' => 'padrino', 'jekyll-vite' => 'jekyll', 'vite_rails_legacy' => 'rails', 'vite_plugin_legacy' => 'rack', }
- VERSION =
'3.1.0'- DEFAULT_VITE_VERSION =
Internal: Versions used by default when running ‘vite install`.
'^2.9.1'- DEFAULT_PLUGIN_VERSION =
'^3.0.9'
Instance Attribute Summary collapse
Class Method Summary collapse
-
.bootstrap ⇒ Object
Internal: Refreshes the manifest.
-
.framework_libraries ⇒ Object
Internal: Detects if the application has installed a framework-specific variant of Vite Ruby.
-
.install_tasks ⇒ Object
Internal: Loads all available rake tasks.
- .instance ⇒ Object
-
.reload_with(**config_options) ⇒ Object
Internal: Creates a new instance with the specified options.
Instance Method Summary collapse
-
#builder ⇒ Object
Public: Keeps track of watched files and triggers builds as needed.
-
#commands ⇒ Object
Internal: Helper to run commands related with Vite.
-
#config ⇒ Object
Public: Current instance configuration for Vite.
-
#dev_server_running? ⇒ Boolean
Public: Returns true if the Vite development server is currently running.
-
#env ⇒ Object
Public: Additional environment variables to pass to Vite.
-
#initialize(**config_options) ⇒ ViteRuby
constructor
A new instance of ViteRuby.
-
#manifest ⇒ Object
Public: Enables looking up assets managed by Vite using name and type.
-
#run(argv, **options) ⇒ Object
Internal: Executes the vite binary.
-
#run_proxy? ⇒ Boolean
Public: The proxy for assets should only run in development mode.
Constructor Details
#initialize(**config_options) ⇒ ViteRuby
Returns a new instance of ViteRuby.
71 72 73 |
# File 'lib/vite_ruby.rb', line 71 def initialize(**) = end |
Instance Attribute Details
#logger ⇒ Object
75 76 77 |
# File 'lib/vite_ruby.rb', line 75 def logger @logger ||= Logger.new($stdout) end |
Class Method Details
.bootstrap ⇒ Object
Internal: Refreshes the manifest.
44 45 46 |
# File 'lib/vite_ruby.rb', line 44 def bootstrap instance.manifest.refresh end |
.framework_libraries ⇒ Object
Internal: Detects if the application has installed a framework-specific variant of Vite Ruby.
60 61 62 63 64 65 66 |
# File 'lib/vite_ruby.rb', line 60 def framework_libraries COMPANION_LIBRARIES.map { |name, framework| if library = Gem.loaded_specs[name] [framework, library] end }.compact end |
.install_tasks ⇒ Object
Internal: Loads all available rake tasks.
49 50 51 |
# File 'lib/vite_ruby.rb', line 49 def install_tasks load File.('tasks/vite.rake', __dir__) end |
.instance ⇒ Object
39 40 41 |
# File 'lib/vite_ruby.rb', line 39 def instance @instance ||= new end |
.reload_with(**config_options) ⇒ Object
Internal: Creates a new instance with the specified options.
54 55 56 |
# File 'lib/vite_ruby.rb', line 54 def reload_with(**) @instance = new(**) end |
Instance Method Details
#builder ⇒ Object
Public: Keeps track of watched files and triggers builds as needed.
114 115 116 |
# File 'lib/vite_ruby.rb', line 114 def builder @builder ||= ViteRuby::Builder.new(self) end |
#commands ⇒ Object
Internal: Helper to run commands related with Vite.
119 120 121 |
# File 'lib/vite_ruby.rb', line 119 def commands @commands ||= ViteRuby::Commands.new(self) end |
#config ⇒ Object
Public: Current instance configuration for Vite.
124 125 126 127 128 129 130 131 |
# File 'lib/vite_ruby.rb', line 124 def config unless defined?(@config) @config = ViteRuby::Config.resolve_config(**) @config.load_ruby_config end @config end |
#dev_server_running? ⇒ Boolean
Public: Returns true if the Vite development server is currently running. NOTE: Checks only once every second since every lookup calls this method.
81 82 83 84 85 86 87 88 89 90 |
# File 'lib/vite_ruby.rb', line 81 def dev_server_running? return false unless run_proxy? return true if defined?(@running_at) && @running_at && Time.now - @running_at < 1 Socket.tcp(config.host, config.port, connect_timeout: config.dev_server_connect_timeout).close @running_at = Time.now true rescue StandardError @running_at = false end |
#env ⇒ Object
Public: Additional environment variables to pass to Vite.
Example:
ViteRuby.env['VITE_RUBY_CONFIG_PATH'] = 'config/alternate_vite.json'
96 97 98 |
# File 'lib/vite_ruby.rb', line 96 def env @env ||= ENV.select { |key, _| key.start_with?(ENV_PREFIX) } end |
#manifest ⇒ Object
Public: Enables looking up assets managed by Vite using name and type.
134 135 136 |
# File 'lib/vite_ruby.rb', line 134 def manifest @manifest ||= ViteRuby::Manifest.new(self) end |
#run(argv, **options) ⇒ Object
Internal: Executes the vite binary.
109 110 111 |
# File 'lib/vite_ruby.rb', line 109 def run(argv, **) (@runner ||= ViteRuby::Runner.new(self)).run(argv, **) end |
#run_proxy? ⇒ Boolean
Public: The proxy for assets should only run in development mode.
101 102 103 104 105 106 |
# File 'lib/vite_ruby.rb', line 101 def run_proxy? config.mode == 'development' || (config.mode == 'test' && !ENV['CI']) rescue StandardError => error logger.error("Failed to check mode for Vite: #{ error.message }") false end |