vite_rails 3.0.20 → 4.0.0.alpha1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -130
- data/README.md +1 -1
- data/lib/tasks/vite.rake +1 -2
- data/lib/vite_rails/config.rb +2 -5
- data/lib/vite_rails/engine.rb +8 -8
- data/lib/vite_rails/{cli.rb → installation.rb} +16 -34
- data/lib/vite_rails/tag_helpers.rb +39 -60
- data/lib/vite_rails/version.rb +1 -1
- data/lib/vite_rails.rb +5 -5
- data/templates/entrypoints/application.js +1 -1
- metadata +11 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b468faa93a51c963d70a987a45f6dbb605c3854dd9ec188d40f0a93c085508d5
|
|
4
|
+
data.tar.gz: a04b6b5f89227b70c1d82e3a649ee1b6d423beedc1e1408126528962ba2962a0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5d5d14601db1a186747566549bd620c1d6c534fe111a2dd9712694743ae3ba691200c56628f1a9fd08c0edbbce68da81ecd28d7e338b8fac215f2bf4b1c99373
|
|
7
|
+
data.tar.gz: 305be4fa2c036e0b8ef509b38fb50985f7c3a8ff8caedc608b919b436a048ffe1d06c5a136a0183ebd80faf5946882ae0a76814eac809e017477c22f7bcbbe24
|
data/CHANGELOG.md
CHANGED
|
@@ -1,137 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
### Bug Fixes
|
|
5
|
-
|
|
6
|
-
* Early Hint links should be separated by a comma ([#576](https://github.com/ElMassimo/vite_ruby/issues/576)) ([6fd220a](https://github.com/ElMassimo/vite_ruby/commit/6fd220abdedf4b36089359565867e61251d8b605))
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## [3.0.19](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.18...vite_rails@3.0.19) (2024-11-05)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
### Bug Fixes
|
|
14
|
-
|
|
15
|
-
* respect host and protocol options in vite_preload_tag ([#413](https://github.com/ElMassimo/vite_ruby/issues/413)) ([bcd8151](https://github.com/ElMassimo/vite_ruby/commit/bcd8151e77e90b5c219650db604ccf6bb6617720))
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
## [3.0.18](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.17...vite_rails@3.0.18) (2024-10-21)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
## [3.0.17](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.16...vite_rails@3.0.17) (2023-10-05)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
### Features
|
|
27
|
-
|
|
28
|
-
* add vite_picture_tag for Rails 7.1 ([#409](https://github.com/ElMassimo/vite_ruby/issues/409)) ([4e3762a](https://github.com/ElMassimo/vite_ruby/commit/4e3762a978b7879206dbc48137ba525d0d0ad971))
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
## [3.0.16](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.15...vite_rails@3.0.16) (2023-09-22)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
### Bug Fixes
|
|
36
|
-
|
|
37
|
-
* emit a single early hint per entrypoint in `vite_preload_tag` ([#402](https://github.com/ElMassimo/vite_ruby/issues/402)) ([3f9a60b](https://github.com/ElMassimo/vite_ruby/commit/3f9a60b4bb28858b8460b5fc302ad352a03ba002))
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
## [3.0.15](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.14...vite_rails@3.0.15) (2023-06-19)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
### Features
|
|
45
|
-
|
|
46
|
-
* add nonce by default to react refresh tag (close [#249](https://github.com/ElMassimo/vite_ruby/issues/249)) ([a31f0a9](https://github.com/ElMassimo/vite_ruby/commit/a31f0a97588568a964b52005beee63217c7bcfa9))
|
|
47
|
-
* Use javascript_tag helper for vite_react_refresh_tag ([#372](https://github.com/ElMassimo/vite_ruby/issues/372)) ([238c6bd](https://github.com/ElMassimo/vite_ruby/commit/238c6bd211c0fafaa6170f0bdd631a0f6e41d992)), closes [#249](https://github.com/ElMassimo/vite_ruby/issues/249)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
## [3.0.14](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.13...vite_rails@3.0.14) (2023-02-08)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
### Features
|
|
55
|
-
|
|
56
|
-
* allow javascript_include_tag options to vite_client_tag ([#337](https://github.com/ElMassimo/vite_ruby/issues/337)) ([417bcf3](https://github.com/ElMassimo/vite_ruby/commit/417bcf38366dd26901eb87cedd80d01118d7936f))
|
|
57
|
-
* make vite_client_tag crossorigin: "anonymous" by default ([404a15a](https://github.com/ElMassimo/vite_ruby/commit/404a15a70c9d4fcd774735045c0d58d3e2aa37f2))
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
## [3.0.13](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.12...vite_rails@3.0.13) (2022-11-13)
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
### Bug Fixes
|
|
65
|
-
|
|
66
|
-
* avoid removing double extension for non-preprocessor assets ([#301](https://github.com/ElMassimo/vite_ruby/issues/301)) ([2024f62](https://github.com/ElMassimo/vite_ruby/commit/2024f62af917cabcb817c32a5fbbe709d477c19f))
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
## [3.0.12](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.11...vite_rails@3.0.12) (2022-08-12)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
### Bug Fixes
|
|
74
|
-
|
|
75
|
-
* ensure rails app is initialized before inferring config ([#240](https://github.com/ElMassimo/vite_ruby/issues/240)) ([3ddc2bc](https://github.com/ElMassimo/vite_ruby/commit/3ddc2bc7873f06b6dd8e58e7c6b4e8a7fd8833f1))
|
|
1
|
+
# [](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.5...vite_rails@) (2022-01-18)
|
|
76
2
|
|
|
77
3
|
|
|
78
4
|
### Features
|
|
79
5
|
|
|
80
|
-
*
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
## [3.0.11](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.10...vite_rails@3.0.11) (2022-08-11)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
### Bug Fixes
|
|
88
|
-
|
|
89
|
-
* use javascript_include_tag in vite_client_tag ([#238](https://github.com/ElMassimo/vite_ruby/issues/238)) ([3d8b366](https://github.com/ElMassimo/vite_ruby/commit/3d8b3668b2f43dacbaf09127fa67a27767e03ffe))
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
## [3.0.10](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.9...vite_rails@3.0.10) (2022-06-15)
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
### Bug Fixes
|
|
97
|
-
|
|
98
|
-
* symbol error on rake enhance call ([#218](https://github.com/ElMassimo/vite_ruby/issues/218)) ([5507156](https://github.com/ElMassimo/vite_ruby/commit/550715624ceb39e1ea5e845e73dcaf5557caa66f))
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
## [3.0.9](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.8...vite_rails@3.0.9) (2022-04-29)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
### Features
|
|
106
|
-
|
|
107
|
-
* add vite_asset_url helper ([#208](https://github.com/ElMassimo/vite_ruby/issues/208)) ([d269793](https://github.com/ElMassimo/vite_ruby/commit/d2697934b5a866ea5b14588b650a00dfe88454a3))
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
## [3.0.8](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.7...vite_rails@3.0.8) (2022-04-14)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
### Bug Fixes
|
|
115
|
-
|
|
116
|
-
* prevent error when using a proc in asset_host (close [#202](https://github.com/ElMassimo/vite_ruby/issues/202)) ([#203](https://github.com/ElMassimo/vite_ruby/issues/203)) ([cb23a81](https://github.com/ElMassimo/vite_ruby/commit/cb23a81037651ac01d993935f68cc526ec2c844d))
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
## [3.0.7](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.6...vite_rails@3.0.7) (2022-03-17)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
### Bug Fixes
|
|
124
|
-
|
|
125
|
-
* load rails environment before rake tasks (close [#193](https://github.com/ElMassimo/vite_ruby/issues/193)) ([72afbc7](https://github.com/ElMassimo/vite_ruby/commit/72afbc7ab5ca33833e9330954499bcf460fd7669))
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
## [3.0.6](https://github.com/ElMassimo/vite_ruby/compare/vite_rails@3.0.5...vite_rails@3.0.6) (2022-02-04)
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
### Bug Fixes
|
|
133
|
-
|
|
134
|
-
* don't add crossorigin to included stylesheet tags (close [#189](https://github.com/ElMassimo/vite_ruby/issues/189)) ([#190](https://github.com/ElMassimo/vite_ruby/issues/190)) ([575c731](https://github.com/ElMassimo/vite_ruby/commit/575c73192fb485e8844f67b821c856d1a09db8f5))
|
|
6
|
+
* **experimental:** add support for Subresource Integrity via vite-plugin-manifest-sri ([0b3142c](https://github.com/ElMassimo/vite_ruby/commit/0b3142cd9d569a5f56821f53cdade337779bb0c1))
|
|
135
7
|
|
|
136
8
|
|
|
137
9
|
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<h1 align="center">
|
|
2
2
|
<a href="https://vite-ruby.netlify.app/">
|
|
3
|
-
<img src="https://raw.githubusercontent.com/ElMassimo/vite_ruby/main/logo.svg" width="120px"/>
|
|
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>
|
data/lib/tasks/vite.rake
CHANGED
data/lib/vite_rails/config.rb
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module ViteRails::Config
|
|
4
|
-
private
|
|
5
|
-
|
|
6
4
|
# Override: Default values for a Rails application.
|
|
7
5
|
def config_defaults
|
|
8
|
-
require
|
|
9
|
-
asset_host = Rails.application&.config&.action_controller&.asset_host
|
|
6
|
+
require 'rails'
|
|
10
7
|
super(
|
|
11
|
-
asset_host:
|
|
8
|
+
asset_host: Rails.application&.config&.action_controller&.asset_host,
|
|
12
9
|
mode: Rails.env.to_s,
|
|
13
10
|
root: Rails.root || Dir.pwd,
|
|
14
11
|
)
|
data/lib/vite_rails/engine.rb
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require 'rails/railtie'
|
|
4
4
|
|
|
5
5
|
class ViteRails::Engine < Rails::Engine
|
|
6
|
-
initializer
|
|
6
|
+
initializer 'vite_rails.proxy' do |app|
|
|
7
7
|
app.middleware.insert_before 0, ViteRuby::DevServerProxy, ssl_verify_none: true if ViteRuby.run_proxy?
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
initializer
|
|
10
|
+
initializer 'vite_rails.helper' do
|
|
11
11
|
ActiveSupport.on_load(:action_controller) do
|
|
12
12
|
ActionController::Base.helper(ViteRails::TagHelpers)
|
|
13
13
|
end
|
|
@@ -17,25 +17,25 @@ class ViteRails::Engine < Rails::Engine
|
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
initializer
|
|
20
|
+
initializer 'vite_rails.logger' do
|
|
21
21
|
config.after_initialize do
|
|
22
22
|
ViteRuby.instance.logger = Rails.logger
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
initializer
|
|
26
|
+
initializer 'vite_rails.bootstrap' do
|
|
27
27
|
if defined?(Rails::Server) || defined?(Rails::Console)
|
|
28
28
|
ViteRuby.bootstrap
|
|
29
29
|
if defined?(Spring)
|
|
30
|
-
require
|
|
30
|
+
require 'spring/watcher'
|
|
31
31
|
Spring.after_fork { ViteRuby.bootstrap }
|
|
32
32
|
Spring.watch(ViteRuby.config.config_path)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
initializer
|
|
37
|
+
initializer 'vite_rails.set_source' do |app|
|
|
38
38
|
source_dir = ViteRuby.config.root.join(ViteRuby.config.source_code_dir)
|
|
39
|
-
app.config.javascript_path = source_dir.relative_path_from(Rails.root.join(
|
|
39
|
+
app.config.javascript_path = source_dir.relative_path_from(Rails.root.join('app')).to_s
|
|
40
40
|
end
|
|
41
41
|
end
|
|
@@ -1,56 +1,39 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
|
|
5
|
-
module ViteRails::CLI
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
module ViteRails::CLI::Build
|
|
9
|
-
def call(**options)
|
|
10
|
-
ensure_rails_init
|
|
11
|
-
super
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Internal: Attempts to initialize the Rails application.
|
|
15
|
-
def ensure_rails_init
|
|
16
|
-
require File.expand_path("config/environment", Dir.pwd)
|
|
17
|
-
rescue StandardError, LoadError => error
|
|
18
|
-
$stderr << "Unable to initialize Rails application before Vite build:\n\n\t#{error.message}\n\n"
|
|
19
|
-
end
|
|
20
|
-
end
|
|
3
|
+
require 'vite_rails'
|
|
21
4
|
|
|
22
5
|
# Internal: Extends the base installation script from Vite Ruby to work for a
|
|
23
6
|
# typical Rails app.
|
|
24
|
-
module ViteRails::
|
|
25
|
-
RAILS_TEMPLATES = Pathname.new(File.expand_path(
|
|
7
|
+
module ViteRails::Installation
|
|
8
|
+
RAILS_TEMPLATES = Pathname.new(File.expand_path('../../templates', __dir__))
|
|
26
9
|
|
|
27
10
|
# Override: Setup a typical apps/web Hanami app to use Vite.
|
|
28
11
|
def setup_app_files
|
|
29
|
-
cp RAILS_TEMPLATES.join(
|
|
12
|
+
cp RAILS_TEMPLATES.join('config/rails-vite.json'), config.config_path
|
|
30
13
|
if dir = %w[app/javascript app/packs].find { |path| root.join(path).exist? }
|
|
31
|
-
replace_first_line config.config_path,
|
|
14
|
+
replace_first_line config.config_path, 'app/frontend', %( "sourceCodeDir": "#{ dir }",)
|
|
32
15
|
end
|
|
33
|
-
setup_content_security_policy root.join(
|
|
34
|
-
append root.join(
|
|
16
|
+
setup_content_security_policy root.join('config/initializers/content_security_policy.rb')
|
|
17
|
+
append root.join('Procfile.dev'), 'web: bin/rails s'
|
|
35
18
|
end
|
|
36
19
|
|
|
37
20
|
# Internal: Configure CSP rules that allow to load @vite/client correctly.
|
|
38
21
|
def setup_content_security_policy(csp_file)
|
|
39
22
|
return unless csp_file.exist?
|
|
40
23
|
|
|
41
|
-
inject_line_after csp_file,
|
|
24
|
+
inject_line_after csp_file, 'policy.script_src', <<~CSP
|
|
42
25
|
# You may need to enable this in production as well depending on your setup.
|
|
43
26
|
# policy.script_src *policy.script_src, :blob if Rails.env.test?
|
|
44
27
|
CSP
|
|
45
|
-
inject_line_after csp_file,
|
|
28
|
+
inject_line_after csp_file, 'policy.connect_src', <<~CSP
|
|
46
29
|
# Allow @vite/client to hot reload changes in development
|
|
47
30
|
# policy.connect_src *policy.connect_src, "ws://\#{ ViteRuby.config.host_with_port }" if Rails.env.development?
|
|
48
31
|
CSP
|
|
49
|
-
inject_line_after csp_file,
|
|
32
|
+
inject_line_after csp_file, 'policy.script_src', <<~CSP
|
|
50
33
|
# Allow @vite/client to hot reload javascript changes in development
|
|
51
34
|
# policy.script_src *policy.script_src, :unsafe_eval, "http://\#{ ViteRuby.config.host_with_port }" if Rails.env.development?
|
|
52
35
|
CSP
|
|
53
|
-
inject_line_after csp_file,
|
|
36
|
+
inject_line_after csp_file, 'policy.style_src', <<~CSP
|
|
54
37
|
# Allow @vite/client to hot reload style changes in development
|
|
55
38
|
# policy.style_src *policy.style_src, :unsafe_inline if Rails.env.development?
|
|
56
39
|
CSP
|
|
@@ -58,12 +41,12 @@ module ViteRails::CLI::Install
|
|
|
58
41
|
|
|
59
42
|
# Override: Create a sample JS file and attempt to inject it in an HTML template.
|
|
60
43
|
def install_sample_files
|
|
61
|
-
unless config.resolved_entrypoints_dir.join(
|
|
62
|
-
cp RAILS_TEMPLATES.join(
|
|
44
|
+
unless config.resolved_entrypoints_dir.join('application.js').exist?
|
|
45
|
+
cp RAILS_TEMPLATES.join('entrypoints/application.js'), config.resolved_entrypoints_dir.join('application.js')
|
|
63
46
|
end
|
|
64
47
|
|
|
65
|
-
if (layout_file = root.join(
|
|
66
|
-
inject_line_before layout_file,
|
|
48
|
+
if (layout_file = root.join('app/views/layouts/application.html.erb')).exist?
|
|
49
|
+
inject_line_before layout_file, '</head>', <<-HTML
|
|
67
50
|
<%= vite_client_tag %>
|
|
68
51
|
<%= vite_javascript_tag 'application' %>
|
|
69
52
|
<!--
|
|
@@ -80,5 +63,4 @@ module ViteRails::CLI::Install
|
|
|
80
63
|
end
|
|
81
64
|
end
|
|
82
65
|
|
|
83
|
-
ViteRuby::CLI::
|
|
84
|
-
ViteRuby::CLI::Install.prepend(ViteRails::CLI::Install)
|
|
66
|
+
ViteRuby::CLI::Install.prepend(ViteRails::Installation)
|
|
@@ -3,19 +3,15 @@
|
|
|
3
3
|
# Public: Allows to render HTML tags for scripts and styles processed by Vite.
|
|
4
4
|
module ViteRails::TagHelpers
|
|
5
5
|
# Public: Renders a script tag for vite/client to enable HMR in development.
|
|
6
|
-
def vite_client_tag
|
|
6
|
+
def vite_client_tag
|
|
7
7
|
return unless src = vite_manifest.vite_client_src
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
tag.script(src: src, type: 'module')
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
# Public: Renders a script tag to enable HMR with React Refresh.
|
|
13
|
-
def vite_react_refresh_tag
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
options[:nonce] = true if Rails::VERSION::MAJOR >= 6 && !options.key?(:nonce)
|
|
17
|
-
|
|
18
|
-
javascript_tag(react_preamble_code.html_safe, type: :module, **options)
|
|
13
|
+
def vite_react_refresh_tag
|
|
14
|
+
vite_manifest.react_refresh_preamble&.html_safe
|
|
19
15
|
end
|
|
20
16
|
|
|
21
17
|
# Public: Resolves the path for the specified Vite asset.
|
|
@@ -26,30 +22,30 @@ module ViteRails::TagHelpers
|
|
|
26
22
|
path_to_asset vite_manifest.path_for(name, **options)
|
|
27
23
|
end
|
|
28
24
|
|
|
29
|
-
# Public: Resolves the url for the specified Vite asset.
|
|
30
|
-
#
|
|
31
|
-
# Example:
|
|
32
|
-
# <%= vite_asset_url 'calendar.css' %> # => "https://example.com/vite/assets/calendar-1016838bab065ae1e122.css"
|
|
33
|
-
def vite_asset_url(name, **options)
|
|
34
|
-
url_to_asset vite_manifest.path_for(name, **options)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
25
|
# Public: Renders a <script> tag for the specified Vite entrypoints.
|
|
38
26
|
def vite_javascript_tag(*names,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
27
|
+
type: 'module',
|
|
28
|
+
asset_type: :javascript,
|
|
29
|
+
integrity: false,
|
|
30
|
+
skip_preload_tags: false,
|
|
31
|
+
skip_style_tags: false,
|
|
32
|
+
crossorigin: 'anonymous',
|
|
33
|
+
media: 'screen',
|
|
34
|
+
**options)
|
|
46
35
|
entries = vite_manifest.resolve_entries(*names, type: asset_type)
|
|
47
|
-
tags =
|
|
48
|
-
|
|
36
|
+
tags = ''.html_safe
|
|
37
|
+
|
|
38
|
+
entries.fetch(:main).each do |src, attrs|
|
|
39
|
+
tags << javascript_include_tag(src, crossorigin: crossorigin, type: type, extname: false, **attrs, **options)
|
|
40
|
+
end
|
|
49
41
|
|
|
50
|
-
|
|
42
|
+
unless skip_preload_tags
|
|
43
|
+
entries.fetch(:imports).each do |href, attrs|
|
|
44
|
+
tags << vite_preload_tag(href, crossorigin: crossorigin, **attrs, **options)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
51
47
|
|
|
52
|
-
tags << stylesheet_link_tag(*entries.fetch(:stylesheets), media: media, **options) unless skip_style_tags
|
|
48
|
+
tags << stylesheet_link_tag(*entries.fetch(:stylesheets), media: media, crossorigin: crossorigin, **options) unless skip_style_tags
|
|
53
49
|
|
|
54
50
|
tags
|
|
55
51
|
end
|
|
@@ -60,38 +56,25 @@ module ViteRails::TagHelpers
|
|
|
60
56
|
end
|
|
61
57
|
|
|
62
58
|
# Public: Renders a <link> tag for the specified Vite entrypoints.
|
|
63
|
-
def vite_stylesheet_tag(*names, **options)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
def vite_stylesheet_tag(*names, integrity: false, **options)
|
|
60
|
+
''.html_safe.tap do |tags|
|
|
61
|
+
vite_manifest.resolve_entries(*names, type: :stylesheet).fetch(:main).each do |href, attrs|
|
|
62
|
+
tags << stylesheet_link_tag(href, **attrs, **options)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
69
65
|
end
|
|
70
66
|
|
|
71
67
|
# Public: Renders an <img> tag for the specified Vite asset.
|
|
72
68
|
def vite_image_tag(name, **options)
|
|
73
69
|
if options[:srcset] && !options[:srcset].is_a?(String)
|
|
74
70
|
options[:srcset] = options[:srcset].map do |src_name, size|
|
|
75
|
-
"#{vite_asset_path(src_name)} #{size}"
|
|
76
|
-
end.join(
|
|
71
|
+
"#{ vite_asset_path(src_name) } #{ size }"
|
|
72
|
+
end.join(', ')
|
|
77
73
|
end
|
|
78
74
|
|
|
79
75
|
image_tag(vite_asset_path(name), options)
|
|
80
76
|
end
|
|
81
77
|
|
|
82
|
-
# Public: Renders a <picture> tag with one or more Vite asset sources.
|
|
83
|
-
def vite_picture_tag(*sources, &block)
|
|
84
|
-
unless Rails.gem_version >= Gem::Version.new("7.1.0")
|
|
85
|
-
raise NotImplementedError, "`vite_picture_tag` is only available for Rails 7.1 or above."
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
sources.flatten!
|
|
89
|
-
options = sources.extract_options!
|
|
90
|
-
|
|
91
|
-
vite_sources = sources.map { |src| vite_asset_path(src) }
|
|
92
|
-
picture_tag(*vite_sources, options, &block)
|
|
93
|
-
end
|
|
94
|
-
|
|
95
78
|
private
|
|
96
79
|
|
|
97
80
|
# Internal: Returns the current manifest loaded by Vite Ruby.
|
|
@@ -100,17 +83,13 @@ private
|
|
|
100
83
|
end
|
|
101
84
|
|
|
102
85
|
# Internal: Renders a modulepreload link tag.
|
|
103
|
-
def vite_preload_tag(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
)
|
|
112
|
-
asset_paths.map { |href|
|
|
113
|
-
tag.link(rel: "modulepreload", href: href, as: "script", crossorigin: crossorigin, **options)
|
|
114
|
-
}.join("\n").html_safe
|
|
86
|
+
def vite_preload_tag(source, crossorigin:, **options)
|
|
87
|
+
href = path_to_asset(source)
|
|
88
|
+
try(:request).try(:send_early_hints, 'Link' => %(<#{ href }>; rel=modulepreload; as=script; crossorigin=#{ crossorigin }).tap { |hint|
|
|
89
|
+
if integrity = options[:integrity]
|
|
90
|
+
hint << "; integrity: #{ integrity }"
|
|
91
|
+
end
|
|
92
|
+
})
|
|
93
|
+
tag.link(rel: 'modulepreload', href: href, as: 'script', type: 'module', crossorigin: crossorigin, **options)
|
|
115
94
|
end
|
|
116
95
|
end
|
data/lib/vite_rails/version.rb
CHANGED
data/lib/vite_rails.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require 'vite_ruby'
|
|
4
4
|
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
5
|
+
require 'vite_rails/version'
|
|
6
|
+
require 'vite_rails/config'
|
|
7
|
+
require 'vite_rails/tag_helpers'
|
|
8
|
+
require 'vite_rails/engine' if defined?(Rails)
|
|
@@ -22,7 +22,7 @@ console.log('Visit the guide for more information: ', 'https://vite-ruby.netlify
|
|
|
22
22
|
// ActiveStorage.start()
|
|
23
23
|
//
|
|
24
24
|
// // Import all channels.
|
|
25
|
-
// const channels = import.meta.
|
|
25
|
+
// const channels = import.meta.globEager('./**/*_channel.js')
|
|
26
26
|
|
|
27
27
|
// Example: Import a stylesheet in app/frontend/index.css
|
|
28
28
|
// import '~/index.css'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vite_rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.0.0.alpha1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Máximo Mussini
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-01-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: railties
|
|
@@ -19,7 +19,7 @@ dependencies:
|
|
|
19
19
|
version: '5.1'
|
|
20
20
|
- - "<"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
22
|
+
version: '8'
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,27 +29,21 @@ dependencies:
|
|
|
29
29
|
version: '5.1'
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
32
|
+
version: '8'
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
34
|
name: vite_ruby
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
|
-
- - ">="
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: 3.2.2
|
|
40
37
|
- - "~>"
|
|
41
38
|
- !ruby/object:Gem::Version
|
|
42
|
-
version:
|
|
39
|
+
version: 4.0.0.alpha1
|
|
43
40
|
type: :runtime
|
|
44
41
|
prerelease: false
|
|
45
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
46
43
|
requirements:
|
|
47
|
-
- - ">="
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: 3.2.2
|
|
50
44
|
- - "~>"
|
|
51
45
|
- !ruby/object:Gem::Version
|
|
52
|
-
version:
|
|
46
|
+
version: 4.0.0.alpha1
|
|
53
47
|
- !ruby/object:Gem::Dependency
|
|
54
48
|
name: spring
|
|
55
49
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -76,9 +70,9 @@ files:
|
|
|
76
70
|
- README.md
|
|
77
71
|
- lib/tasks/vite.rake
|
|
78
72
|
- lib/vite_rails.rb
|
|
79
|
-
- lib/vite_rails/cli.rb
|
|
80
73
|
- lib/vite_rails/config.rb
|
|
81
74
|
- lib/vite_rails/engine.rb
|
|
75
|
+
- lib/vite_rails/installation.rb
|
|
82
76
|
- lib/vite_rails/tag_helpers.rb
|
|
83
77
|
- lib/vite_rails/version.rb
|
|
84
78
|
- templates/Procfile.dev
|
|
@@ -88,9 +82,8 @@ homepage: https://github.com/ElMassimo/vite_ruby
|
|
|
88
82
|
licenses:
|
|
89
83
|
- MIT
|
|
90
84
|
metadata:
|
|
91
|
-
source_code_uri: https://github.com/ElMassimo/vite_ruby/tree/vite_rails@
|
|
92
|
-
changelog_uri: https://github.com/ElMassimo/vite_ruby/blob/vite_rails@
|
|
93
|
-
rubygems_mfa_required: 'true'
|
|
85
|
+
source_code_uri: https://github.com/ElMassimo/vite_ruby/tree/vite_rails@4.0.0.alpha1/vite_rails
|
|
86
|
+
changelog_uri: https://github.com/ElMassimo/vite_ruby/blob/vite_rails@4.0.0.alpha1/vite_rails/CHANGELOG.md
|
|
94
87
|
post_install_message:
|
|
95
88
|
rdoc_options: []
|
|
96
89
|
require_paths:
|
|
@@ -102,9 +95,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
102
95
|
version: '2.5'
|
|
103
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
97
|
requirements:
|
|
105
|
-
- - "
|
|
98
|
+
- - ">"
|
|
106
99
|
- !ruby/object:Gem::Version
|
|
107
|
-
version:
|
|
100
|
+
version: 1.3.1
|
|
108
101
|
requirements: []
|
|
109
102
|
rubygems_version: 3.2.32
|
|
110
103
|
signing_key:
|