Class: ViteRuby::Config
- Inherits:
-
Object
- Object
- ViteRuby::Config
- Defined in:
- lib/vite_ruby/config.rb
Overview
Public: Allows to resolve configuration sourced from ‘config/vite.json` and environment variables, combining them with the default options.
Class Method Summary collapse
-
.resolve_config(**attrs) ⇒ Object
Public: Returns the project configuration for Vite.
Instance Method Summary collapse
-
#build_output_dir ⇒ Object
Public: The directory where Vite will store the built assets.
- #host_with_port ⇒ Object
-
#known_manifest_paths ⇒ Object
Internal: Path to the manifest files generated by Vite and vite-plugin-ruby.
-
#load_ruby_config ⇒ Object
Public: Loads an optional config/vite.rb file that can modify ViteRuby.env.
-
#manifest_paths ⇒ Object
Internal: Path to the manifest files generated by Vite and vite-plugin-ruby.
- #origin ⇒ Object
- #protocol ⇒ Object
-
#resolved_entrypoints_dir ⇒ Object
Public: The directory where the entries are located.
-
#to_env(env_vars = ViteRuby.env) ⇒ Object
Public: Sets additional environment variables for vite-plugin-ruby.
-
#vite_cache_dir ⇒ Object
Internal: The directory where Vite stores its processing cache.
-
#vite_root_dir ⇒ Object
Public: The directory that Vite uses as root.
-
#watched_paths ⇒ Object
Internal: Files and directories that should be watched for changes.
-
#within_root(&block) ⇒ Object
Internal: Changes the current directory to the root dir.
Class Method Details
.resolve_config(**attrs) ⇒ Object
Public: Returns the project configuration for Vite.
126 127 128 129 130 131 |
# File 'lib/vite_ruby/config.rb', line 126 def resolve_config(**attrs) config = config_defaults.merge(attrs.transform_keys(&:to_s)) file_path = File.join(config["root"], config["config_path"]) file_config = config_from_file(file_path, mode: config["mode"]) new DEFAULT_CONFIG.merge(file_config).merge(config_from_env).merge(config) end |
Instance Method Details
#build_output_dir ⇒ Object
Public: The directory where Vite will store the built assets.
37 38 39 |
# File 'lib/vite_ruby/config.rb', line 37 def build_output_dir root.join(public_dir, public_output_dir) end |
#host_with_port ⇒ Object
16 17 18 |
# File 'lib/vite_ruby/config.rb', line 16 def host_with_port "#{host}:#{port}" end |
#known_manifest_paths ⇒ Object
Internal: Path to the manifest files generated by Vite and vite-plugin-ruby.
21 22 23 24 25 26 27 28 29 |
# File 'lib/vite_ruby/config.rb', line 21 def known_manifest_paths [ # NOTE: Generated by Vite when `manifest: true`, which vite-plugin-ruby enables. build_output_dir.join(".vite/manifest.json"), # NOTE: Path where vite-plugin-ruby outputs the assets manifest file. build_output_dir.join(".vite/manifest-assets.json"), ] end |
#load_ruby_config ⇒ Object
Public: Loads an optional config/vite.rb file that can modify ViteRuby.env
57 58 59 60 |
# File 'lib/vite_ruby/config.rb', line 57 def load_ruby_config rb_config_path = File.(config_path.sub(/.json$/, ".rb"), root) load rb_config_path if File.exist?(rb_config_path) end |
#manifest_paths ⇒ Object
Internal: Path to the manifest files generated by Vite and vite-plugin-ruby.
32 33 34 |
# File 'lib/vite_ruby/config.rb', line 32 def manifest_paths known_manifest_paths.select(&:exist?) end |
#origin ⇒ Object
8 9 10 |
# File 'lib/vite_ruby/config.rb', line 8 def origin "#{protocol}://#{host_with_port}" end |
#protocol ⇒ Object
12 13 14 |
# File 'lib/vite_ruby/config.rb', line 12 def protocol https ? "https" : "http" end |
#resolved_entrypoints_dir ⇒ Object
Public: The directory where the entries are located.
42 43 44 |
# File 'lib/vite_ruby/config.rb', line 42 def resolved_entrypoints_dir vite_root_dir.join(entrypoints_dir) end |
#to_env(env_vars = ViteRuby.env) ⇒ Object
Public: Sets additional environment variables for vite-plugin-ruby.
63 64 65 66 67 68 69 |
# File 'lib/vite_ruby/config.rb', line 63 def to_env(env_vars = ViteRuby.env) CONFIGURABLE_WITH_ENV.each_with_object({}) do |option, env| unless (value = @config[option]).nil? env["#{ViteRuby::ENV_PREFIX}_#{option.upcase}"] = value.to_s end end.merge(env_vars) end |
#vite_cache_dir ⇒ Object
Internal: The directory where Vite stores its processing cache.
47 48 49 |
# File 'lib/vite_ruby/config.rb', line 47 def vite_cache_dir root.join("node_modules/.vite") end |
#vite_root_dir ⇒ Object
Public: The directory that Vite uses as root.
52 53 54 |
# File 'lib/vite_ruby/config.rb', line 52 def vite_root_dir root.join(source_code_dir) end |
#watched_paths ⇒ Object
Internal: Files and directories that should be watched for changes.
72 73 74 75 76 77 78 79 80 81 |
# File 'lib/vite_ruby/config.rb', line 72 def watched_paths [ *(watch_additional_paths + additional_entrypoints).reject { |dir| dir.start_with?("~/") || dir.start_with?(source_code_dir) }, "#{source_code_dir}/**/*", config_path.sub(/.json$/, ".{rb,json}"), *DEFAULT_WATCHED_PATHS, ].freeze end |
#within_root(&block) ⇒ Object
Internal: Changes the current directory to the root dir.
84 85 86 |
# File 'lib/vite_ruby/config.rb', line 84 def within_root(&block) Dir.chdir(File.(root), &block) end |