vite_rails 1.0.12 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/README.md +44 -35
  4. data/lib/tasks/vite.rake +17 -0
  5. data/lib/vite_rails.rb +5 -82
  6. data/lib/vite_rails/config.rb +11 -135
  7. data/lib/vite_rails/engine.rb +7 -11
  8. data/lib/vite_rails/installation.rb +52 -0
  9. data/lib/vite_rails/tag_helpers.rb +61 -0
  10. data/lib/vite_rails/version.rb +2 -2
  11. data/{lib/install/config/vite.json → templates/config/rails-vite.json} +1 -0
  12. data/{lib/install/javascript → templates}/entrypoints/application.js +0 -0
  13. metadata +27 -168
  14. data/CONTRIBUTING.md +0 -33
  15. data/lib/install/bin/vite +0 -17
  16. data/lib/install/binstubs.rb +0 -6
  17. data/lib/install/config/vite.config.ts +0 -8
  18. data/lib/install/template.rb +0 -40
  19. data/lib/tasks/vite/binstubs.rake +0 -12
  20. data/lib/tasks/vite/build.rake +0 -39
  21. data/lib/tasks/vite/clean.rake +0 -23
  22. data/lib/tasks/vite/clobber.rake +0 -20
  23. data/lib/tasks/vite/info.rake +0 -20
  24. data/lib/tasks/vite/install.rake +0 -12
  25. data/lib/tasks/vite/install_dependencies.rake +0 -14
  26. data/lib/tasks/vite/verify_install.rake +0 -23
  27. data/lib/vite_rails/builder.rb +0 -111
  28. data/lib/vite_rails/commands.rb +0 -109
  29. data/lib/vite_rails/dev_server.rb +0 -23
  30. data/lib/vite_rails/dev_server_proxy.rb +0 -57
  31. data/lib/vite_rails/helper.rb +0 -71
  32. data/lib/vite_rails/manifest.rb +0 -143
  33. data/lib/vite_rails/runner.rb +0 -53
  34. data/package.json +0 -19
  35. data/package/default.vite.json +0 -16
  36. data/test/builder_test.rb +0 -77
  37. data/test/commands_test.rb +0 -67
  38. data/test/config_test.rb +0 -133
  39. data/test/dev_server_proxy_test.rb +0 -102
  40. data/test/dev_server_test.rb +0 -9
  41. data/test/engine_rake_tasks_test.rb +0 -81
  42. data/test/helper_test.rb +0 -75
  43. data/test/manifest_test.rb +0 -85
  44. data/test/mode_test.rb +0 -16
  45. data/test/mounted_app/Rakefile +0 -6
  46. data/test/mounted_app/test/dummy/Rakefile +0 -5
  47. data/test/mounted_app/test/dummy/bin/rails +0 -5
  48. data/test/mounted_app/test/dummy/bin/rake +0 -5
  49. data/test/mounted_app/test/dummy/config.ru +0 -7
  50. data/test/mounted_app/test/dummy/config/application.rb +0 -12
  51. data/test/mounted_app/test/dummy/config/environment.rb +0 -5
  52. data/test/mounted_app/test/dummy/config/vite.json +0 -14
  53. data/test/mounted_app/test/dummy/package.json +0 -8
  54. data/test/mounted_app/test/dummy/yarn.lock +0 -208
  55. data/test/rake_tasks_test.rb +0 -60
  56. data/test/runner_test.rb +0 -31
  57. data/test/test_app/Rakefile +0 -5
  58. data/test/test_app/app/frontend/entrypoints/application.js +0 -2
  59. data/test/test_app/bin/vite +0 -17
  60. data/test/test_app/config.ru +0 -7
  61. data/test/test_app/config/application.rb +0 -13
  62. data/test/test_app/config/environment.rb +0 -6
  63. data/test/test_app/config/vite.json +0 -18
  64. data/test/test_app/config/vite_additional_paths.json +0 -5
  65. data/test/test_app/config/vite_public_dir.json +0 -5
  66. data/test/test_app/package.json +0 -13
  67. data/test/test_app/public/vite-production/manifest-assets.json +0 -10
  68. data/test/test_app/public/vite-production/manifest.json +0 -39
  69. data/test/test_app/some.config.js +0 -0
  70. data/test/test_app/yarn.lock +0 -11
  71. data/test/test_helper.rb +0 -68
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57f866deafddde5401e02ec27cf751eb26a40a0be1fd832d9d3813fd7a69e721
4
- data.tar.gz: 7cf22c583a3ac70f4353e227b0da4463b42067dd38f0c36774e665e619b31f2d
3
+ metadata.gz: 8abb492c94977c4ce3b0fa8412a6d25fa3fe73b8b5bce3e1736233b7daafecd4
4
+ data.tar.gz: d9846171170239c19634ab50d3a0eab7840ad305f94cded2c49cc5b6ea9a5af6
5
5
  SHA512:
6
- metadata.gz: d101294de0e6f585b7df56c2881c465698f4c6ccbe8c4220117d7119c84f21e8b80e6aa2865dd353fa27b3b2c3d7a78095e80466c2d9b5f6eda60b6073a55ed0
7
- data.tar.gz: fdbe92f7afafd6f82bafc6525a4099151efcdc385ce49e5cc5f696ea79efe5d411b6eaf093b9b1ec1402140a7d4ac34f629401fb70d9005535eaf38e989cf4cd
6
+ metadata.gz: d9273818122428faf644437362cdb3951c4dc733c9935e70491b2effcdf1c2544b0e5ff78702d827413d4ba1e18fbb029d013c33bb5c39ca29711d7094faba33
7
+ data.tar.gz: ebef265a9c4d210451a757fe8ac99c01dbd7134c56e6d0587bb7649a7866fc5f810adc1a24f4cfb9b0bfa3f283039b8dddfd4071579b9568a7bab5c0e251c258
data/CHANGELOG.md CHANGED
@@ -1,3 +1,39 @@
1
+ ## [2.0.5](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@2.0.4...vite_rails@2.0.5) (2021-03-18)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Using a .jsx extension in a tag helper in development ([a56491b](https://github.com/ElMassimo/vite_ruby/commit/a56491b96720ae537b6b6305aa7efa70cf19e4ee))
7
+
8
+
9
+
10
+ ## [2.0.4](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@2.0.3...vite_rails@2.0.4) (2021-03-09)
11
+
12
+
13
+ ### Features
14
+
15
+ * Detect installations of the latest version of Webpacker (app/packs) ([e9a3bc0](https://github.com/ElMassimo/vite_ruby/commit/e9a3bc02475dbadac77e58b3980a4af8df5aaa02))
16
+
17
+
18
+
19
+ ## [2.0.3](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@2.0.2...vite_rails@2.0.3) (2021-03-07)
20
+
21
+ - Add a bounded requirement to `vite_ruby` dependency.
22
+
23
+ ## Vite Rails 2.0.2 (2020-02-11)
24
+
25
+ - Automatically infer `app/javascript` as the `sourceCodeDir` if it exists.
26
+
27
+ ## Vite Rails 2.0.1 (2020-02-11)
28
+
29
+ - Add the CSP rules commented out when installing, in case the user hasn't uncommented them yet.
30
+
31
+ ## Vite Rails 2.0.0 (2020-02-10)
32
+
33
+ - Extracted core functionality to `vite_ruby`.
34
+ - User-facing API hasn't really changed, but internal classes have been renamed.
35
+ - Installation script now injects tags to `application.html.erb` if it exists.
36
+
1
37
  ## Vite Rails 1.0.12 (2020-01-29)
2
38
 
3
39
  - Add support for Vite 2.0.0-beta.56, which modified the manifest to output a `css` field in the manifest.
data/README.md CHANGED
@@ -1,54 +1,69 @@
1
1
  <h1 align="center">
2
- <a href="https://vite-rails.netlify.app/">
3
- <img src="https://raw.githubusercontent.com/ElMassimo/vite_rails/main/docs/public/logo.svg" width="120px"/>
2
+ <a href="https://vite-ruby.netlify.app/">
3
+ <img src="https://raw.githubusercontent.com/ElMassimo/vite_ruby/main/docs/public/logo.svg" width="120px"/>
4
4
  </a>
5
5
 
6
6
  <br>
7
7
 
8
- <a href="https://vite-rails.netlify.app/">
8
+ <a href="https://vite-ruby.netlify.app/">
9
9
  Vite Rails
10
10
  </a>
11
11
 
12
12
  <br>
13
13
 
14
14
  <p align="center">
15
- <a href="https://github.com/ElMassimo/vite_rails/actions">
16
- <img alt="Build Status" src="https://github.com/ElMassimo/vite_rails/workflows/build/badge.svg"/>
15
+ <a href="https://github.com/ElMassimo/vite_ruby/actions">
16
+ <img alt="Build Status" src="https://github.com/ElMassimo/vite_ruby/workflows/build/badge.svg"/>
17
17
  </a>
18
- <a href="https://codeclimate.com/github/ElMassimo/vite_rails">
19
- <img alt="Maintainability" src="https://codeclimate.com/github/ElMassimo/vite_rails/badges/gpa.svg"/>
18
+ <a href="https://codeclimate.com/github/ElMassimo/vite_ruby">
19
+ <img alt="Maintainability" src="https://codeclimate.com/github/ElMassimo/vite_ruby/badges/gpa.svg"/>
20
20
  </a>
21
- <a href="https://codeclimate.com/github/ElMassimo/vite_rails">
22
- <img alt="Test Coverage" src="https://codeclimate.com/github/ElMassimo/vite_rails/badges/coverage.svg"/>
21
+ <a href="https://codeclimate.com/github/ElMassimo/vite_ruby">
22
+ <img alt="Test Coverage" src="https://codeclimate.com/github/ElMassimo/vite_ruby/badges/coverage.svg"/>
23
23
  </a>
24
24
  <a href="https://rubygems.org/gems/vite_rails">
25
25
  <img alt="Gem Version" src="https://img.shields.io/gem/v/vite_rails.svg?colorB=e9573f"/>
26
26
  </a>
27
- <a href="https://github.com/ElMassimo/vite_rails/blob/master/LICENSE.txt">
27
+ <a href="https://github.com/ElMassimo/vite_ruby/blob/master/LICENSE.txt">
28
28
  <img alt="License" src="https://img.shields.io/badge/license-MIT-428F7E.svg"/>
29
29
  </a>
30
30
  </p>
31
31
  </h1>
32
32
 
33
- [website]: https://vite-rails.netlify.app/
34
- [configuration reference]: https://vite-rails.netlify.app/config/
35
- [features]: https://vite-rails.netlify.app/guide/introduction.html
36
- [guides]: https://vite-rails.netlify.app/guide/
37
- [config]: https://vite-rails.netlify.app/config/
38
- [vite_rails]: https://github.com/ElMassimo/vite_rails
33
+ [website]: https://vite-ruby.netlify.app/
34
+ [configuration reference]: https://vite-ruby.netlify.app/config/
35
+ [features]: https://vite-ruby.netlify.app/guide/introduction.html
36
+ [guides]: https://vite-ruby.netlify.app/guide/
37
+ [config]: https://vite-ruby.netlify.app/config/
38
+ [vite_rails]: https://github.com/ElMassimo/vite_ruby/tree/main/vite_rails
39
39
  [webpacker]: https://github.com/rails/webpacker
40
40
  [vite]: http://vitejs.dev/
41
- [config file]: https://github.com/ElMassimo/vite_rails/blob/main/package/default.vite.json
42
- [example app]: https://github.com/ElMassimo/vite_rails/tree/main/examples/blog
43
- [heroku]: https://vite-rails-demo.herokuapp.com/
44
- [Issues]: https://github.com/ElMassimo/vite_rails/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
45
- [Discussions]: https://github.com/ElMassimo/vite_rails/discussions
46
-
47
- [__Vite Rails__][vite_rails] allows you to use [Vite] to power the frontend of your Rails app.
41
+ [config file]: https://github.com/ElMassimo/vite_ruby/blob/main/vite-plugin-ruby/default.vite.json
42
+ [example app]: https://github.com/ElMassimo/pingcrm-vite
43
+ [heroku]: https://pingcrm-vite.herokuapp.com/
44
+ [Issues]: https://github.com/ElMassimo/vite_ruby/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
45
+ [Discussions]: https://github.com/ElMassimo/vite_ruby/discussions
46
+ [no bundling]: https://vitejs.dev/guide/introduction.html#the-problem
47
+ [bundling]: https://vitejs.dev/guide/introduction.html#why-bundle-for-production
48
48
 
49
49
  [Vite] is to frontend tooling as Ruby to programming, pure joy! 😍
50
50
 
51
- Check an [example app] running on [Heroku].
51
+ [__Vite Rails__][vite_rails] provides a complete setup for Rails applications,
52
+ allowing you to leverage [Vite] to power the frontend of your Rails app.
53
+
54
+ ## Why Vite? 🤔
55
+
56
+ Vite [does not bundle your code during development][no bundling], which means the
57
+ dev server is extremely __fast to start__, and your changes will be __updated instantly__.
58
+
59
+ In production, Vite [bundles your code][bundling]
60
+ with tree-shaking, lazy-loading, and common chunk splitting out of the box, to achieve optimal loading performance.
61
+
62
+ It also provides great defaults, and is easier to configure than similar tools like webpack.
63
+
64
+ Check [this video comparison with webpack](https://github.com/ElMassimo/jumpstart-vite)
65
+ which demonstrates the difference in boot time, or [this one](https://github.com/ElMassimo/pingcrm-vite/pull/1)
66
+ with the difference in speed during development.
52
67
 
53
68
  ## Features ⚡️
54
69
 
@@ -67,14 +82,14 @@ Visit the [documentation website][website] to check out the [guides] and searcha
67
82
  Add this line to your application's Gemfile:
68
83
 
69
84
  ```ruby
70
- gem 'vite_rails'
85
+ gem 'vite_rails' # vite_rails_legacy if using Rails 4
71
86
  ```
72
87
 
73
88
  Then, run:
74
89
 
75
90
  ```bash
76
91
  bundle install
77
- bin/rake vite:install
92
+ bundle exec vite install
78
93
  ```
79
94
 
80
95
  This will generate configuration files and a sample setup.
@@ -83,16 +98,9 @@ Additional installation instructions are available in the [documentation website
83
98
 
84
99
  ## Getting Started 💻
85
100
 
86
- Restart your Rails server, and then run <kbd>bin/vite</kbd> to start the Vite development server.
87
-
88
- Add the following your `views/layouts/application.html.erb`:
89
-
90
- ```erb
91
- <%= vite_client_tag %>
92
- <%= vite_javascript_tag 'application' %>
93
- ```
101
+ Restart your Rails server, and then run <kbd>bin/vite dev</kbd> to start the Vite development server.
94
102
 
95
- Visit any page and you should see a printed console output: `Vite ⚡️ Rails`.
103
+ Visit any page and you should see a printed console output: `Vite ⚡️ Ruby`.
96
104
 
97
105
  For more [guides] and a full [configuration reference], check the [documentation website][website].
98
106
 
@@ -102,6 +110,7 @@ Please use [Issues] to report bugs you find, and [Discussions] to make feature r
102
110
 
103
111
  Don't hesitate to _⭐️ star the project_ if you find it useful!
104
112
 
113
+ Using it in production? Always love to hear about it! 😃
105
114
 
106
115
  ## Special Thanks 🙏
107
116
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'vite_ruby'
4
+ ViteRuby.install_tasks
5
+
6
+ namespace :vite_rails do
7
+ desc 'Fixes Rails management of node dev dependencies (build dependencies)'
8
+ task :set_node_env do
9
+ ENV['NODE_ENV'] = 'development'
10
+ end
11
+ end
12
+
13
+ # Set NODE_ENV before installation, so that Rails installs JS build dependencies
14
+ # on servers that precompile assets.
15
+ ['yarn:install', 'webpacker:yarn_install'].each do |name|
16
+ Rake::Task[name].enhance([:'vite_rails:set_node_env']) if Rake::Task.task_defined?(name)
17
+ end
data/lib/vite_rails.rb CHANGED
@@ -1,85 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rails'
4
- require 'active_support/all'
3
+ require 'vite_ruby'
5
4
 
6
- require 'zeitwerk'
7
- loader = Zeitwerk::Loader.for_gem
8
- loader.ignore("#{ __dir__ }/install")
9
- loader.ignore("#{ __dir__ }/tasks")
10
- loader.setup
11
-
12
- class ViteRails
13
- # Internal: Prefix used for environment variables that modify the configuration.
14
- ENV_PREFIX = 'VITE_RUBY'
15
-
16
- class << self
17
- delegate :config, :builder, :manifest, :commands, :dev_server, :dev_server_running?, :run_proxy?, to: :instance
18
- delegate :mode, to: :config
19
- delegate :bootstrap, :clean, :clean_from_rake, :clobber, :build, :build_from_rake, to: :commands
20
-
21
- attr_writer :instance
22
-
23
- def instance
24
- @instance ||= ViteRails.new
25
- end
26
-
27
- def run(args)
28
- $stdout.sync = true
29
- ViteRails::Runner.new(args).run
30
- end
31
-
32
- # Internal: Allows to obtain any env variables for configuration options.
33
- def load_env_variables
34
- ENV.select { |key, _| key.start_with?(ENV_PREFIX) }
35
- end
36
- end
37
-
38
- # Public: Additional environment variables to pass to Vite.
39
- #
40
- # Example:
41
- # ViteRails.env['VITE_RUBY_CONFIG_PATH'] = 'config/alternate_vite.json'
42
- cattr_accessor(:env) { load_env_variables }
43
-
44
- cattr_accessor(:logger) { ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT)) }
45
-
46
- # Public: Returns true if the Vite development server is running.
47
- def dev_server_running?
48
- run_proxy? && dev_server.running?
49
- end
50
-
51
- # Public: The proxy for assets should only run in development mode.
52
- def run_proxy?
53
- config.mode == 'development'
54
- rescue StandardError => error
55
- ViteRails.logger.error("Failed to check mode for Vite: #{ error.message }")
56
- false
57
- end
58
-
59
- # Public: Current instance configuration for Vite.
60
- def config
61
- @config ||= ViteRails::Config.resolve_config
62
- end
63
-
64
- # Public: Keeps track of watched files and triggers builds as needed.
65
- def builder
66
- @builder ||= ViteRails::Builder.new(self)
67
- end
68
-
69
- # Public: Allows to check if the Vite development server is running.
70
- def dev_server
71
- @dev_server ||= ViteRails::DevServer.new(config)
72
- end
73
-
74
- # Public: Enables looking up assets managed by Vite using name and type.
75
- def manifest
76
- @manifest ||= ViteRails::Manifest.new(self)
77
- end
78
-
79
- # Internal: Helper to run commands related with Vite.
80
- def commands
81
- @commands ||= ViteRails::Commands.new(self)
82
- end
83
- end
84
-
85
- ViteRails::Engine if defined?(Rails)
5
+ require 'vite_rails/version'
6
+ require 'vite_rails/config'
7
+ require 'vite_rails/tag_helpers'
8
+ require 'vite_rails/engine' if defined?(Rails)
@@ -1,139 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json'
4
-
5
- # Public: Allows to resolve configuration sourced from `config/vite.json` and
6
- # environment variables, combining them with the default options.
7
- class ViteRails::Config
8
- delegate :as_json, :inspect, to: :@config
9
-
10
- def initialize(attrs)
11
- @config = attrs.tap { |config| coerce_values(config) }.freeze
12
- end
13
-
14
- def protocol
15
- https ? 'https' : 'http'
16
- end
17
-
18
- def host_with_port
19
- "#{ host }:#{ port }"
20
- end
21
-
22
- # Internal: Path where Vite outputs the manifest file.
23
- def manifest_path
24
- build_output_dir.join('manifest.json')
25
- end
26
-
27
- # Internal: Path where vite-plugin-ruby outputs the assets manifest file.
28
- def assets_manifest_path
29
- build_output_dir.join('manifest-assets.json')
30
- end
31
-
32
- # Public: The directory where Vite will store the built assets.
33
- def build_output_dir
34
- root.join(public_dir, public_output_dir)
35
- end
36
-
37
- # Public: The directory where the entries are located.
38
- def resolved_entrypoints_dir
39
- root.join(source_code_dir, entrypoints_dir)
40
- end
41
-
42
- # Internal: The directory where Vite stores its processing cache.
43
- def vite_cache_dir
44
- root.join('node_modules/.vite')
45
- end
46
-
47
- # Public: Sets additional environment variables for vite-plugin-ruby.
48
- def to_env
49
- CONFIGURABLE_WITH_ENV.each_with_object({}) do |option, env|
50
- unless (value = @config[option]).nil?
51
- env["#{ ViteRails::ENV_PREFIX }_#{ option.upcase }"] = value.to_s
52
- end
53
- end.merge(ViteRails.env)
54
- end
55
-
56
- private
57
-
58
- # Internal: Coerces all the configuration values, in case they were passed
59
- # as environment variables which are always strings.
60
- def coerce_values(config)
61
- config['mode'] = config['mode'].to_s
62
- config['port'] = config['port'].to_i
63
- config['root'] = Pathname.new(config['root'])
64
- config['build_cache_dir'] = config['root'].join(config['build_cache_dir'])
65
- coerce_booleans(config, 'auto_build', 'hide_build_console_output', 'https')
66
- end
67
-
68
- # Internal: Coerces configuration options to boolean.
69
- def coerce_booleans(config, *names)
70
- names.each { |name| config[name] = [true, 'true'].include?(config[name]) }
71
- end
72
-
73
- class << self
74
- # Public: Returns the project configuration for Vite.
75
- def resolve_config(**attrs)
76
- config = attrs.transform_keys(&:to_s).reverse_merge(config_defaults)
77
- file_path = File.join(config['root'], config['config_path'])
78
- file_config = config_from_file(file_path, mode: config['mode'])
79
- new DEFAULT_CONFIG.merge(file_config).merge(config_from_env).merge(config)
80
- end
81
-
82
- private
83
-
84
- # Internal: Default values for a Rails application.
85
- def config_defaults
86
- {
87
- 'asset_host' => option_from_env('asset_host') || Rails.application&.config&.action_controller&.asset_host,
88
- 'config_path' => option_from_env('config_path') || DEFAULT_CONFIG.fetch('config_path'),
89
- 'mode' => option_from_env('mode') || Rails.env.to_s,
90
- 'root' => option_from_env('root') || Rails.root || Dir.pwd,
91
- }
92
- end
93
-
94
- # Internal: Used to load a JSON file from the specified path.
95
- def load_json(path)
96
- JSON.parse(File.read(File.expand_path(path))).deep_transform_keys(&:underscore)
97
- end
98
-
99
- # Internal: Retrieves a configuration option from environment variables.
100
- def option_from_env(name)
101
- ViteRails.env["#{ ViteRails::ENV_PREFIX }_#{ name.upcase }"]
102
- end
103
-
104
- # Internal: Extracts the configuration options provided as env vars.
105
- def config_from_env
106
- CONFIGURABLE_WITH_ENV.each_with_object({}) do |option, env_vars|
107
- if value = option_from_env(option)
108
- env_vars[option] = value
109
- end
110
- end
111
- end
112
-
113
- # Internal: Loads the configuration options provided in a JSON file.
114
- def config_from_file(path, mode:)
115
- multi_env_config = load_json(path)
116
- multi_env_config.fetch('all', {})
117
- .merge(multi_env_config.fetch(mode, {}))
118
- rescue Errno::ENOENT => error
119
- warn "Check that your vite.json configuration file is available in the load path. #{ error.message }"
120
- {}
121
- end
122
- end
123
-
124
- # Internal: Shared configuration with the Vite plugin for Ruby.
125
- DEFAULT_CONFIG = load_json("#{ __dir__ }/../../package/default.vite.json").freeze
126
-
127
- # Internal: Configuration options that can not be provided as env vars.
128
- NOT_CONFIGURABLE_WITH_ENV = %w[watch_additional_paths].freeze
129
-
130
- # Internal: Configuration options that can be provided as env vars.
131
- CONFIGURABLE_WITH_ENV = (DEFAULT_CONFIG.keys + %w[mode root] - NOT_CONFIGURABLE_WITH_ENV).freeze
132
-
133
- public
134
-
135
- # Define getters for the configuration options.
136
- (CONFIGURABLE_WITH_ENV + NOT_CONFIGURABLE_WITH_ENV).each do |option|
137
- define_method(option) { @config[option] }
3
+ module ViteRails::Config
4
+ # Override: Default values for a Rails application.
5
+ def config_defaults
6
+ require 'rails'
7
+ super(
8
+ asset_host: Rails.application&.config&.action_controller&.asset_host,
9
+ mode: Rails.env.to_s,
10
+ root: Rails.root || Dir.pwd,
11
+ )
138
12
  end
139
13
  end
14
+
15
+ ViteRuby::Config.singleton_class.prepend(ViteRails::Config)